diff --git a/res/drawable/default_preference_background.xml b/res/drawable/default_preference_background.xml
index bea5d3d..7f7b560 100644
--- a/res/drawable/default_preference_background.xml
+++ b/res/drawable/default_preference_background.xml
@@ -15,15 +15,8 @@
 -->
 
 <inset xmlns:android="http://schemas.android.com/apk/res/android"
-        android:insetLeft="0dip"
-        android:insetTop="0dip"
-        android:insetRight="0dip"
-        android:insetBottom="0dip">
+    android:inset="0dip">
 
-    <shape android:shape="rectangle">
-
-        <solid android:color="@color/default_preference_background_color" />
-
-    </shape>
+    <color android:color="?android:attr/colorBackground" />
 
 </inset>
diff --git a/res/drawable/preference_background.xml b/res/drawable/preference_background.xml
index f47bcf5..7f7b560 100644
--- a/res/drawable/preference_background.xml
+++ b/res/drawable/preference_background.xml
@@ -15,13 +15,8 @@
 -->
 
 <inset xmlns:android="http://schemas.android.com/apk/res/android"
-        android:insetLeft="0dip"
-        android:insetTop="0dip"
-        android:insetRight="0dip"
-        android:insetBottom="0dip">
+    android:inset="0dip">
 
-    <shape android:shape="rectangle">
-        <solid android:color="@color/preference_background_color" />
-    </shape>
+    <color android:color="?android:attr/colorBackground" />
 
 </inset>
diff --git a/res/drawable/search_panel_list_background.xml b/res/drawable/search_panel_list_background.xml
index a31e322..7f7b560 100644
--- a/res/drawable/search_panel_list_background.xml
+++ b/res/drawable/search_panel_list_background.xml
@@ -15,15 +15,8 @@
 -->
 
 <inset xmlns:android="http://schemas.android.com/apk/res/android"
-        android:insetLeft="0dip"
-        android:insetTop="0dip"
-        android:insetRight="0dip"
-        android:insetBottom="0dip">
+    android:inset="0dip">
 
-    <shape android:shape="rectangle">
-
-        <solid android:color="@color/search_panel_list_background_color" />
-
-    </shape>
+    <color android:color="?android:attr/colorBackground" />
 
 </inset>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 1c299f5..246a13f 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -73,13 +73,6 @@
     <color name="switchbar_background_color">#ff37474f</color>
     <color name="switch_accent_color">#ff7fcac3</color>
 
-    <color name="default_preference_background_color">@*android:color/background_material_light</color>
-    <color name="preference_background_color">@color/default_preference_background_color</color>
-    <color name="search_panel_list_background_color">@color/default_preference_background_color</color>
-
-    <color name="setup_wizard_preference_background_color_dark">@*android:color/background_material_dark</color>
-    <color name="setup_wizard_preference_background_color_light">@*android:color/background_material_light</color>
-
     <color name="wifi_divider">#ffe0e0e0</color>
 
 </resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index e9d4297..b4fb388 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -42,7 +42,7 @@
         <item name="setup_divider_color">@color/setup_divider_color_dark</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item>
         <item name="wifi_signal">@drawable/wifi_signal_teal</item>
-        <item name="preferenceBackgroundColor">@color/setup_wizard_preference_background_color_dark</item>
+        <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
     </style>
 
     <style name="SetupWizardWifiTheme.Light" parent="android:Theme.Material.Light.NoActionBar">
@@ -59,7 +59,7 @@
         <item name="setup_divider_color">@color/setup_divider_color_light</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item>
         <item name="wifi_signal">@drawable/wifi_signal_teal</item>
-        <item name="preferenceBackgroundColor">@color/setup_wizard_preference_background_color_light</item>
+        <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
     </style>
 
     <style name="Theme.WifiDialog" parent="@*android:style/Theme.Material.Dialog.Alert">
@@ -145,6 +145,9 @@
     </style>
 
     <style name="Theme.DialogWhenLarge" parent="@android:style/Theme.Material.Light.DialogWhenLarge">
+        <!-- Explicitly override the background color. -->
+        <item name="android:colorBackground">@android:color/white</item>
+
         <!-- Used by the ActionBar -->
         <item name="android:colorPrimary">@color/theme_primary</item>
         <!-- Used by the StatusBar -->
@@ -179,6 +182,9 @@
     <style name="Theme.AlertDialog" parent="@*android:style/Theme.Material.Light.Dialog.Alert">
         <item name="android:windowSoftInputMode">adjustResize</item>
 
+        <!-- Explicitly override the background color. -->
+        <item name="android:colorBackground">@android:color/white</item>
+
         <!-- Used by the ActionBar -->
         <item name="android:colorPrimary">@color/theme_primary</item>
         <!-- Used by the StatusBar -->
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 84758d8..d04f6ac 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -96,6 +96,7 @@
         private int mRequestedQuality = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
         private ChooseLockSettingsHelper mChooseLockSettingsHelper;
         private Stage mUiStage = Stage.Introduction;
+        private boolean mDone = false;
         private TextView mHeaderText;
         private String mFirstPin;
         private KeyboardView mKeyboardView;
@@ -229,6 +230,7 @@
                     updateStage(mUiStage);
                 }
             }
+            mDone = false;
             if (activity instanceof SettingsActivity) {
                 final SettingsActivity sa = (SettingsActivity) activity;
                 int id = mIsAlphaMode ? R.string.lockpassword_choose_your_password_header
@@ -389,6 +391,8 @@
         }
 
         private void handleNext() {
+            if (mDone) return;
+
             final String pin = mPasswordEntry.getText().toString();
             if (TextUtils.isEmpty(pin)) {
                 return;
@@ -409,6 +413,7 @@
                     mLockPatternUtils.saveLockPassword(pin, mRequestedQuality, isFallback);
                     getActivity().setResult(RESULT_FINISHED);
                     getActivity().finish();
+                    mDone = true;
                     startActivity(RedactionInterstitial.createStartIntent(getActivity()));
                 } else {
                     CharSequence tmp = mPasswordEntry.getText();
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index 9b3ce0a..c218c8d 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -290,6 +290,7 @@
         }
 
         private Stage mUiStage = Stage.Introduction;
+        private boolean mDone = false;
 
         private Runnable mClearPatternRunnable = new Runnable() {
             public void run() {
@@ -363,6 +364,7 @@
                 }
                 updateStage(Stage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]);
             }
+            mDone = false;
             return view;
         }
 
@@ -519,6 +521,7 @@
         }
 
         private void saveChosenPatternAndFinish() {
+            if (mDone) return;
             LockPatternUtils utils = mChooseLockSettingsHelper.utils();
             final boolean lockVirgin = !utils.isPatternEverChosen();
 
@@ -533,6 +536,7 @@
 
             getActivity().setResult(RESULT_FINISHED);
             getActivity().finish();
+            mDone = true;
             startActivity(RedactionInterstitial.createStartIntent(getActivity()));
         }
     }
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java
index 560fe76..adc1b2d 100644
--- a/src/com/android/settings/CryptKeeper.java
+++ b/src/com/android/settings/CryptKeeper.java
@@ -155,6 +155,13 @@
     }
 
     private class DecryptTask extends AsyncTask<String, Void, Integer> {
+        private void hide(int id) {
+            View view = findViewById(id);
+            if (view != null) {
+                view.setVisibility(View.GONE);
+            }
+        }
+
         @Override
         protected Integer doInBackground(String... params) {
             final IMountService service = getMountService();
@@ -175,6 +182,12 @@
                     mLockPatternView.removeCallbacks(mClearPatternRunnable);
                     mLockPatternView.postDelayed(mClearPatternRunnable, RIGHT_PATTERN_CLEAR_TIMEOUT_MS);
                 }
+                hide(R.id.passwordEntry);
+                hide(R.id.switch_ime_button);
+                hide(R.id.lockPattern);
+                hide(R.id.status);
+                hide(R.id.owner_info);
+                hide(R.id.emergencyCallButton);
             } else if (failedAttempts == MAX_FAILED_ATTEMPTS) {
                 // Factory reset the device.
                 Intent intent = new Intent(Intent.ACTION_MASTER_CLEAR);
