diff --git a/res/values/strings.xml b/res/values/strings.xml
index b5fb6c0..c4d0ee4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1663,8 +1663,8 @@
     <!-- Display settings --><skip/>
     <!-- Sound & display settings screen, section header for settings related to display -->
     <string name="display_settings">Display</string>
-    <!-- Sound & display settings screen, accelerometer-based rotation lock check box label [CHAR LIMIT=30] -->
-    <string name="accelerometer_title">Rotation lock</string>
+    <!-- Sound & display settings screen, accelerometer-based rotation check box label -->
+    <string name="accelerometer_title">Auto-rotate screen</string>
     <!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
     <string name="accelerometer_summary_on" product="tablet">Switch orientation automatically when rotating tablet</string>
     <!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index bad7340..e8bd11d 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -55,7 +55,7 @@
     private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
     private static final String KEY_SCREEN_SAVER = "screensaver";
 
-    private CheckBoxPreference mRotationLock;
+    private CheckBoxPreference mAccelerometer;
     private ListPreference mFontSizePref;
     private CheckBoxPreference mNotificationPulse;
 
@@ -67,7 +67,7 @@
     private ContentObserver mAccelerometerRotationObserver = new ContentObserver(new Handler()) {
         @Override
         public void onChange(boolean selfChange) {
-            updateRotationLockCheckbox();
+            updateAccelerometerRotationCheckbox();
         }
     };
 
@@ -78,8 +78,8 @@
 
         addPreferencesFromResource(R.xml.display_settings);
 
-        mRotationLock = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
-        mRotationLock.setPersistent(false);
+        mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
+        mAccelerometer.setPersistent(false);
 
         mScreenSaverPreference = findPreference(KEY_SCREEN_SAVER);
         if (mScreenSaverPreference != null
@@ -222,7 +222,7 @@
     }
 
     private void updateState() {
-        updateRotationLockCheckbox();
+        updateAccelerometerRotationCheckbox();
         readFontSizePreference(mFontSizePref);
         updateScreenSaverSummary();
     }
@@ -234,11 +234,11 @@
                 : R.string.screensaver_settings_summary_off);
     }
 
-    private void updateRotationLockCheckbox() {
+    private void updateAccelerometerRotationCheckbox() {
         if (getActivity() == null) return;
-        mRotationLock.setChecked(Settings.System.getInt(
+        mAccelerometer.setChecked(Settings.System.getInt(
                 getContentResolver(),
-                Settings.System.ACCELEROMETER_ROTATION, 0) == 0);
+                Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
     }
 
     public void writeFontSizePreference(Object objValue) {
@@ -252,11 +252,11 @@
 
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-        if (preference == mRotationLock) {
+        if (preference == mAccelerometer) {
             try {
                 IWindowManager wm = IWindowManager.Stub.asInterface(
                         ServiceManager.getService(Context.WINDOW_SERVICE));
-                if (!mRotationLock.isChecked()) {
+                if (mAccelerometer.isChecked()) {
                     wm.thawRotation();
                 } else {
                     wm.freezeRotation(-1);
