diff --git a/res-product/values/strings.xml b/res-product/values/strings.xml
index cd208c1..1467a4d 100644
--- a/res-product/values/strings.xml
+++ b/res-product/values/strings.xml
@@ -571,12 +571,6 @@
     <string name="battery_tip_dialog_summary_message" product="device">Your apps are using a normal amount of battery. If apps use too much battery, your device will suggest actions you can take.\n\nYou can always turn on Battery Saver if you\u2019re running low on battery.</string>
     <!-- Summary for the smart battery toggle [CHAR LIMIT=NONE] -->
     <string name="smart_battery_summary" product="default">Limit battery for apps that you don\u2019t use often</string>
-    <!-- Battery Saver: Description for sticky battery saver preference [CHAR_LIMIT=NONE] -->
-    <string name="battery_saver_sticky_description_new" product="default">Battery Saver turns off when your phone charges above <xliff:g id="battery_percentage" example="80%">%1$s</xliff:g></string>
-    <!-- Battery Saver: Description for sticky battery saver preference [CHAR_LIMIT=NONE] -->
-    <string name="battery_saver_sticky_description_new" product="tablet">Battery Saver turns off when your tablet charges above <xliff:g id="battery_percentage" example="80%">%1$s</xliff:g></string>
-    <!-- Battery Saver: Description for sticky battery saver preference [CHAR_LIMIT=NONE] -->
-    <string name="battery_saver_sticky_description_new" product="device">Battery Saver turns off when your device charges above <xliff:g id="battery_percentage" example="80%">%1$s</xliff:g></string>
     <!-- [CHAR_LIMIT=NONE] Battery usage main screen footer content -->
     <string name="battery_usage_screen_footer_since_last_full_charge" product="default">Usage numbers are proportional to battery usage since last full charge and usage data is not measured when phone is charging</string>
     <!-- [CHAR_LIMIT=NONE] Battery usage main screen footer content -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index aa1c526..87543c3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5239,6 +5239,9 @@
     <!-- Battery Saver: Title for sticky battery saver preference [CHAR_LIMIT=60] -->
     <string name="battery_saver_sticky_title_new">Turn off when charged</string>
 
+    <!-- Battery Saver: Description for sticky battery saver preference [CHAR_LIMIT=NONE] -->
+    <string name="battery_saver_sticky_description_new">Battery Saver turns off when battery reaches <xliff:g id="battery_percentage" example="80%">%1$s</xliff:g></string>
+
     <!-- Battery saver: Label for seekbar to change battery saver threshold [CHAR_LIMIT=40] -->
     <string name="battery_saver_seekbar_title"><xliff:g id="percent">%1$s</xliff:g></string>
 
diff --git a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java
index a7e94e9..ac895df 100644
--- a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java
+++ b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java
@@ -140,7 +140,7 @@
         pref.setIcon(R.drawable.ic_block);
         pref.setOnPreferenceClickListener(this);
         pref.setChecked(Settings.Secure.getInt(mContext.getContentResolver(),
-                Settings.Secure.STYLUS_BUTTONS_DISABLED, 0) == 1);
+                Settings.Secure.STYLUS_BUTTONS_ENABLED, 1) == 0);
         return pref;
     }
 
@@ -175,8 +175,8 @@
                 break;
             case KEY_IGNORE_BUTTON:
                 Settings.Secure.putInt(mContext.getContentResolver(),
-                        Secure.STYLUS_BUTTONS_DISABLED,
-                        ((SwitchPreference) preference).isChecked() ? 1 : 0);
+                        Secure.STYLUS_BUTTONS_ENABLED,
+                        ((SwitchPreference) preference).isChecked() ? 0 : 1);
                 break;
         }
         return true;
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java
index cd6b4bd..56a8373 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java
@@ -364,7 +364,7 @@
     @Test
     public void buttonsPreference_checkedWhenFlagTrue() {
         Settings.Secure.putInt(mContext.getContentResolver(),
-                Settings.Secure.STYLUS_BUTTONS_DISABLED, 1);
+                Settings.Secure.STYLUS_BUTTONS_ENABLED, 0);
 
         showScreen(mController);
         SwitchPreference buttonsPref = (SwitchPreference) mPreferenceContainer.getPreference(2);
@@ -375,7 +375,7 @@
     @Test
     public void buttonsPreference_uncheckedWhenFlagFalse() {
         Settings.Secure.putInt(mContext.getContentResolver(),
-                Settings.Secure.STYLUS_BUTTONS_DISABLED, 0);
+                Settings.Secure.STYLUS_BUTTONS_ENABLED, 1);
 
         showScreen(mController);
         SwitchPreference buttonsPref = (SwitchPreference) mPreferenceContainer.getPreference(2);
@@ -386,7 +386,7 @@
     @Test
     public void buttonsPreference_updatesFlagOnClick() {
         Settings.Secure.putInt(mContext.getContentResolver(),
-                Settings.Secure.STYLUS_BUTTONS_DISABLED, 1);
+                Settings.Secure.STYLUS_BUTTONS_ENABLED, 0);
         showScreen(mController);
         SwitchPreference buttonsPref = (SwitchPreference) mPreferenceContainer.getPreference(2);
 
@@ -394,7 +394,7 @@
 
         assertThat(buttonsPref.isChecked()).isEqualTo(false);
         assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
-                Secure.STYLUS_BUTTONS_DISABLED, -1)).isEqualTo(0);
+                Secure.STYLUS_BUTTONS_ENABLED, -1)).isEqualTo(0);
     }
 
     private void showScreen(StylusDevicesController controller) {
