diff --git a/res/layout/crypt_keeper_pattern_entry.xml b/res/layout/crypt_keeper_pattern_entry.xml
new file mode 100644
index 0000000..a59d36f
--- /dev/null
+++ b/res/layout/crypt_keeper_pattern_entry.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+>
+    <include layout="@layout/crypt_keeper_status" />
+
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:layout_marginStart="8dip"
+        android:layout_marginEnd="8dip"
+        android:orientation="horizontal"
+    >
+        <include layout="@layout/crypt_keeper_pattern_field" />
+    </LinearLayout>
+
+    <!-- Emergency call button.
+         Text and icon are set by CryptKeeper.updateEmergencyCallButtonState() -->
+    <Button android:id="@+id/emergencyCallButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_marginTop="16dip"
+        style="@*android:style/Widget.Button.Transparent"
+        android:textSize="14sp"
+        android:drawablePadding="6dip"
+    />
+
+</LinearLayout>
diff --git a/res/layout/crypt_keeper_pattern_field.xml b/res/layout/crypt_keeper_pattern_field.xml
new file mode 100644
index 0000000..c4ec1f4
--- /dev/null
+++ b/res/layout/crypt_keeper_pattern_field.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Contents of the password entry field for CryptKeeper. Comes with an IME
+     switcher, if necessary. Assumed to be in a horizontal LinearLayout. -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+   <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
+       android:layout_width="match_parent"
+       android:layout_height="match_parent" />
+
+   <ImageView android:id="@+id/switch_ime_button"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content"
+       android:src="@drawable/ic_lockscreen_ime"
+       android:clickable="true"
+       android:contentDescription="@string/crypt_keeper_switch_input_method"
+       android:padding="8dip"
+       android:layout_gravity="center"
+       android:background="?android:attr/selectableItemBackground"
+       android:visibility="gone"
+   />
+</merge>
diff --git a/res/layout/crypt_keeper_pin_entry.xml b/res/layout/crypt_keeper_pin_entry.xml
new file mode 100644
index 0000000..dfc5fb5
--- /dev/null
+++ b/res/layout/crypt_keeper_pin_entry.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+>
+    <include layout="@layout/crypt_keeper_status" />
+
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:layout_marginStart="8dip"
+        android:layout_marginEnd="8dip"
+        android:orientation="horizontal"
+    >
+        <include layout="@layout/crypt_keeper_pin_field" />
+    </LinearLayout>
+
+    <!-- Emergency call button.
+         Text and icon are set by CryptKeeper.updateEmergencyCallButtonState() -->
+    <Button android:id="@+id/emergencyCallButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_marginTop="16dip"
+        style="@*android:style/Widget.Button.Transparent"
+        android:textSize="14sp"
+        android:drawablePadding="6dip"
+    />
+
+</LinearLayout>
diff --git a/res/layout/crypt_keeper_pin_field.xml b/res/layout/crypt_keeper_pin_field.xml
new file mode 100644
index 0000000..270b26b
--- /dev/null
+++ b/res/layout/crypt_keeper_pin_field.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License")
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Contents of the password entry field for CryptKeeper. Comes with an IME
+     switcher, if necessary. Assumed to be in a horizontal LinearLayout. -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+    <EditText android:id="@+id/passwordEntry"
+        android:layout_height="wrap_content"
+        android:layout_width="0dip"
+        android:layout_weight="1"
+        android:singleLine="true"
+        android:inputType="numberPassword"
+        android:imeOptions="flagForceAscii|actionDone"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+     />
+
+   <ImageView android:id="@+id/switch_ime_button"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content"
+       android:src="@drawable/ic_lockscreen_ime"
+       android:clickable="true"
+       android:contentDescription="@string/crypt_keeper_switch_input_method"
+       android:padding="8dip"
+       android:layout_gravity="center"
+       android:background="?android:attr/selectableItemBackground"
+       android:visibility="gone"
+   />
+</merge>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 26b89cb..47a4bb3 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -2041,8 +2041,8 @@
     <string name="nfc_payment_learn_more" msgid="5583407773744324447">"Få flere oplysninger"</string>
     <string name="nfc_payment_menu_item_add_service" msgid="2885947408068969081">"Find apps"</string>
     <string name="nfc_payment_set_default_label" msgid="7315817259485674542">"Vil du angive dette som din præference?"</string>
-    <string name="nfc_payment_set_default" msgid="8961120988148253016">"Vil du altid bruge <xliff:g id="APP">%1$s</xliff:g>, når du bruger Peg og betal?"</string>
-    <string name="nfc_payment_set_default_instead_of" msgid="3803693771001226795">"Vil du altid bruge <xliff:g id="APP_0">%1$s</xliff:g> i stedet for <xliff:g id="APP_1">%2$s</xliff:g>, når du bruger Peg og betal?"</string>
+    <string name="nfc_payment_set_default" msgid="8961120988148253016">"Vil du altid bruge <xliff:g id="APP">%1$s</xliff:g>, når du bruger Tryk og betal?"</string>
+    <string name="nfc_payment_set_default_instead_of" msgid="3803693771001226795">"Vil du altid bruge <xliff:g id="APP_0">%1$s</xliff:g> i stedet for <xliff:g id="APP_1">%2$s</xliff:g>, når du bruger Tryk og betal?"</string>
     <string name="restriction_settings_title" msgid="4233515503765879736">"Begrænsninger"</string>
     <string name="restriction_menu_reset" msgid="2067644523489568173">"Fjern begrænsninger"</string>
     <string name="restriction_menu_change_pin" msgid="740081584044302775">"Skift pinkode"</string>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index fb0c86b..5ec6db2 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -434,7 +434,7 @@
   <string-array name="show_non_rect_clip_entries">
     <item msgid="993742912147090253">"बंद"</item>
     <item msgid="675719912558941285">"गैर-आयताकार क्लिप क्षेत्र नीले रंग से बनाएं"</item>
-    <item msgid="1064373276095698656">"परीक्षित आरेखण आदेशों को हरे रंग से हाइलाइट करें"</item>
+    <item msgid="1064373276095698656">"परीक्षित ड्रॉइंग आदेशों को हरे रंग से हाइलाइट करें"</item>
   </string-array>
   <string-array name="track_frame_time_entries">
     <item msgid="2193584639058893150">"बंद"</item>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 7645c01..5a79730 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -1814,7 +1814,7 @@
     <string name="wait_for_debugger" msgid="1202370874528893091">"डीबगर की प्रतीक्षा करें"</string>
     <string name="wait_for_debugger_summary" msgid="1766918303462746804">"डीबग किया गया ऐप्स  निष्पादन के पहले अनुलग्न करने हेतु डीबगर की प्रतीक्षा करता है"</string>
     <string name="debug_input_category" msgid="1811069939601180246">"इनपुट"</string>
-    <string name="debug_drawing_category" msgid="6755716469267367852">"आरेखण"</string>
+    <string name="debug_drawing_category" msgid="6755716469267367852">"ड्रॉइंग"</string>
     <string name="debug_hw_drawing_category" msgid="6220174216912308658">"हार्डवेयर त्वरित रेंडरिंग"</string>
     <string name="debug_monitoring_category" msgid="7640508148375798343">"निगरानी"</string>
     <string name="strict_mode" msgid="1938795874357830695">"सख्‍त मोड सक्षम किया गया"</string>
@@ -1841,7 +1841,7 @@
     <string name="show_cpu_usage" msgid="2389212910758076024">"CPU उपयोग दिखाएं"</string>
     <string name="show_cpu_usage_summary" msgid="2113341923988958266">"स्‍क्रीन ओवरले वर्तमान CPU उपयोग को दिखा रहा है"</string>
     <string name="force_hw_ui" msgid="6426383462520888732">"बलपूर्वक GPU रेंडर करें"</string>
-    <string name="force_hw_ui_summary" msgid="5535991166074861515">"2d आरेखण के लिए GPU का बलपूर्वक उपयोग करें"</string>
+    <string name="force_hw_ui_summary" msgid="5535991166074861515">"2d ड्रॉइंग के लिए GPU का बलपूर्वक उपयोग करें"</string>
     <string name="force_msaa" msgid="7920323238677284387">"4x MSAA को बाध्य करें"</string>
     <string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 ऐप्स  में 4x MSAA को सक्षम करें"</string>
     <string name="show_non_rect_clip" msgid="505954950474595172">"गैर-आयताकार क्लिप परिचालनों को डीबग करें"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index feab5cb..113c91d 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1689,7 +1689,7 @@
     <string name="backup_data_title" msgid="1239105919852668016">"Hifadhi nakala ya data yangu"</string>
     <string name="backup_data_summary" msgid="708773323451655666">"Hifadhi nakala ya data ya programu, manenosiri ya Wi-Fi, na mipangilio mingine kwenye seva za Google"</string>
     <string name="backup_configure_account_title" msgid="3790872965773196615">"Akaunti mbadala"</string>
-    <string name="backup_configure_account_default_summary" msgid="2436933224764745553">"Hakuna akaunti inayohifadhi kwa sasa data iliyochelezwa"</string>
+    <string name="backup_configure_account_default_summary" msgid="2436933224764745553">"Hakuna akaunti ambayo kwa sasa inahifadhi nakala rudufu za data"</string>
     <string name="auto_restore_title" msgid="5397528966329126506">"Onyesha upya otomatiki"</string>
     <string name="auto_restore_summary" msgid="4235615056371993807">"Wakati wa kusanidi upya programu, rejesha mipangilio na data ambazo zina nakala rudufu"</string>
     <string name="local_backup_password_title" msgid="3860471654439418822">"Nenosiri la hifadhi rudufu ya eneo kazi"</string>
@@ -1762,7 +1762,7 @@
     <string name="last_synced" msgid="4242919465367022234">"Ilisawazishwa mwisho <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
     <string name="sync_in_progress" msgid="5151314196536070569">"Inasawazisha sasa..."</string>
     <string name="settings_backup" msgid="2274732978260797031">"Mipangilio ya kuhifadhi nakala rudufu"</string>
-    <string name="settings_backup_summary" msgid="7916877705938054035">"Cheleza mipangilio yangu"</string>
+    <string name="settings_backup_summary" msgid="7916877705938054035">"Hifadhi nakala za mipangilio yangu"</string>
     <string name="sync_menu_sync_now" msgid="6154608350395805683">"Sawazisha sasa"</string>
     <string name="sync_menu_sync_cancel" msgid="8292379009626966949">"Ghairi usawazishaji"</string>
     <string name="sync_one_time_sync" msgid="6766593624598183090">"Gusa ili kusawazisha sasa<xliff:g id="LAST_SYNC_TIME">
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index b6bc7a1..0eec2b7 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -1424,8 +1424,8 @@
     <string name="captioning_custom_options_title" msgid="5067500939930322405">"Özel seçenekler"</string>
     <string name="captioning_background_color" msgid="9053011212948992570">"Arka plan rengi"</string>
     <string name="captioning_background_opacity" msgid="6029993616419971202">"Arka plan şeffaflığı"</string>
-    <string name="captioning_window_color" msgid="6902052743419717394">"Başlık penceresi rengi"</string>
-    <string name="captioning_window_opacity" msgid="5041556024849862376">"Başlık penceresi opaklığı"</string>
+    <string name="captioning_window_color" msgid="6902052743419717394">"Altyazı penceresi rengi"</string>
+    <string name="captioning_window_opacity" msgid="5041556024849862376">"Altyazı penceresi opaklığı"</string>
     <string name="captioning_foreground_color" msgid="85623486537640059">"Metin rengi"</string>
     <string name="captioning_foreground_opacity" msgid="4370967856995419788">"Metin opaklığı"</string>
     <string name="captioning_edge_color" msgid="3670094753735263238">"Kenar rengi"</string>
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index a92f514..9c9fab1 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -226,20 +226,7 @@
         private int upgradeQuality(int quality, MutableBoolean allowBiometric) {
             quality = upgradeQualityForDPM(quality);
             quality = upgradeQualityForKeyStore(quality);
-            int encryptionQuality = upgradeQualityForEncryption(quality);
-            if (encryptionQuality > quality) {
-                //The first case checks whether biometric is allowed, prior to the user making
-                //their selection from the list
-                if (allowBiometric != null) {
-                    allowBiometric.value = quality <=
-                            DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK;
-                } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK) {
-                    //When the user has selected biometric we shouldn't change that due to
-                    //encryption
-                    return quality;
-                }
-            }
-            return encryptionQuality;
+            return quality;
         }
 
         private int upgradeQualityForDPM(int quality) {
@@ -251,27 +238,6 @@
             return quality;
         }
 
-        /**
-         * Mix in "encryption minimums" to any given quality value.  This prevents users
-         * from downgrading the pattern/pin/password to a level below the minimums.
-         *
-         * ASSUMPTION:  Setting quality is sufficient (e.g. minimum lengths will be set
-         * appropriately.)
-         */
-        private int upgradeQualityForEncryption(int quality) {
-            // Don't upgrade quality for secondary users. Encryption requirements don't apply.
-            if (!Process.myUserHandle().equals(UserHandle.OWNER)) return quality;
-            int encryptionStatus = mDPM.getStorageEncryptionStatus();
-            boolean encrypted = (encryptionStatus == DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE)
-                    || (encryptionStatus == DevicePolicyManager.ENCRYPTION_STATUS_ACTIVATING);
-            if (encrypted) {
-                if (quality < CryptKeeperSettings.MIN_PASSWORD_QUALITY) {
-                    quality = CryptKeeperSettings.MIN_PASSWORD_QUALITY;
-                }
-            }
-            return quality;
-        }
-
         private int upgradeQualityForKeyStore(int quality) {
             if (!mKeyStore.isEmpty()) {
                 if (quality < CredentialStorage.MIN_PASSWORD_QUALITY) {
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java
index 23ec70e..d974d00 100644
--- a/src/com/android/settings/CryptKeeper.java
+++ b/src/com/android/settings/CryptKeeper.java
@@ -34,6 +34,7 @@
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.storage.IMountService;
+import android.os.storage.StorageManager;
 import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.text.Editable;
@@ -60,6 +61,9 @@
 import com.android.internal.telephony.ITelephony;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockPatternView;
+import com.android.internal.widget.LockPatternView.Cell;
 
 import java.util.List;
 
@@ -113,6 +117,7 @@
     private int mCooldown;
     PowerManager.WakeLock mWakeLock;
     private EditText mPasswordEntry;
+    private LockPatternView mLockPatternView;
     /** Number of calls to {@link #notifyUser()} to ignore before notifying. */
     private int mNotificationCountdown = 0;
 
@@ -175,7 +180,9 @@
                 final TextView status = (TextView) findViewById(R.id.status);
                 status.setText(R.string.try_again);
                 // Reenable the password entry
-                mPasswordEntry.setEnabled(true);
+                if (mPasswordEntry != null) {
+                    mPasswordEntry.setEnabled(true);
+                }
             }
         }
     }
@@ -354,7 +361,21 @@
             setContentView(R.layout.crypt_keeper_progress);
             encryptionProgressInit();
         } else if (mValidationComplete || isDebugView(FORCE_VIEW_PASSWORD)) {
-            setContentView(R.layout.crypt_keeper_password_entry);
+            final IMountService service = getMountService();
+            int type = StorageManager.CRYPT_TYPE_PASSWORD;
+            try {
+                type = service.getPasswordType();
+            } catch (Exception e) {
+                Log.e(TAG, "Error while getting type - showing default dialog" + e);
+            }
+
+            if(type == StorageManager.CRYPT_TYPE_PIN) {
+                setContentView(R.layout.crypt_keeper_pin_entry);
+            } else if (type == StorageManager.CRYPT_TYPE_PATTERN) {
+                setContentView(R.layout.crypt_keeper_pattern_entry);
+            } else {
+                setContentView(R.layout.crypt_keeper_password_entry);
+            }
             passwordEntryInit();
         } else if (!mValidationRequested) {
             // We're supposed to be encrypted, but no validation has been done.
@@ -503,14 +524,44 @@
         }
     }
 
-    private void passwordEntryInit() {
+    protected LockPatternView.OnPatternListener mChooseNewLockPatternListener =
+            new LockPatternView.OnPatternListener() {
+
+            @Override
+            public void onPatternStart() {
+            }
+
+            @Override
+            public void onPatternCleared() {
+            }
+
+            @Override
+            public void onPatternDetected(List<LockPatternView.Cell> pattern) {
+                new DecryptTask().execute(LockPatternUtils.patternToString(pattern));
+            }
+
+            @Override
+            public void onPatternCellAdded(List<Cell> pattern) {
+            }
+     };
+
+     private void passwordEntryInit() {
+        // Password/pin case
         mPasswordEntry = (EditText) findViewById(R.id.passwordEntry);
-        mPasswordEntry.setOnEditorActionListener(this);
-        mPasswordEntry.requestFocus();
-        // Become quiet when the user interacts with the Edit text screen.
-        mPasswordEntry.setOnKeyListener(this);
-        mPasswordEntry.setOnTouchListener(this);
-        mPasswordEntry.addTextChangedListener(this);
+        if (mPasswordEntry != null){
+            mPasswordEntry.setOnEditorActionListener(this);
+            mPasswordEntry.requestFocus();
+            // Become quiet when the user interacts with the Edit text screen.
+            mPasswordEntry.setOnKeyListener(this);
+            mPasswordEntry.setOnTouchListener(this);
+            mPasswordEntry.addTextChangedListener(this);
+        }
+
+        // Pattern case
+        mLockPatternView = (LockPatternView) findViewById(R.id.lockPattern);
+        if (mLockPatternView != null) {
+            mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener);
+        }
 
         // Disable the Emergency call button if the device has no voice telephone capability
         final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
diff --git a/src/com/android/settings/accessibility/EdgeTypePreference.java b/src/com/android/settings/accessibility/EdgeTypePreference.java
index ad71a76..3bff704 100644
--- a/src/com/android/settings/accessibility/EdgeTypePreference.java
+++ b/src/com/android/settings/accessibility/EdgeTypePreference.java
@@ -34,7 +34,7 @@
     private static final int DEFAULT_FOREGROUND_COLOR = Color.WHITE;
     private static final int DEFAULT_BACKGROUND_COLOR = Color.TRANSPARENT;
     private static final int DEFAULT_EDGE_COLOR = Color.BLACK;
-    private static final float DEFAULT_FONT_SIZE = 96f;
+    private static final float DEFAULT_FONT_SIZE = 32f;
 
     public EdgeTypePreference(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -57,7 +57,9 @@
 
         preview.setForegroundColor(DEFAULT_FOREGROUND_COLOR);
         preview.setBackgroundColor(DEFAULT_BACKGROUND_COLOR);
-        preview.setTextSize(DEFAULT_FONT_SIZE);
+
+        final float density = getContext().getResources().getDisplayMetrics().density;
+        preview.setTextSize(DEFAULT_FONT_SIZE * density);
 
         final int value = getValueAt(index);
         preview.setEdgeType(value);
diff --git a/src/com/android/settings/accessibility/PresetPreference.java b/src/com/android/settings/accessibility/PresetPreference.java
index 84aba6c..9f1aee3 100644
--- a/src/com/android/settings/accessibility/PresetPreference.java
+++ b/src/com/android/settings/accessibility/PresetPreference.java
@@ -27,7 +27,7 @@
 import com.android.settings.R;
 
 public class PresetPreference extends ListDialogPreference {
-    private static final float DEFAULT_FONT_SIZE = 96f;
+    private static final float DEFAULT_FONT_SIZE = 32f;
 
     private final CaptioningManager mCaptioningManager;
 
@@ -54,7 +54,8 @@
         CaptionPropertiesFragment.applyCaptionProperties(
                 mCaptioningManager, previewText, value);
 
-        previewText.setTextSize(DEFAULT_FONT_SIZE);
+        final float density = getContext().getResources().getDisplayMetrics().density;
+        previewText.setTextSize(DEFAULT_FONT_SIZE * density);
 
         final CharSequence title = getTitleAt(index);
         if (title != null) {
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
index 79dbbbd..f47fecc 100755
--- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -57,7 +57,7 @@
 
     static final int DEFAULT_DISCOVERABLE_TIMEOUT = DISCOVERABLE_TIMEOUT_TWO_MINUTES;
 
-    private final Context mContext;
+    private Context mContext;
     private final Handler mUiHandler;
     private final Preference mDiscoveryPreference;
     // Preference for visibility time out.  Not final as it needs to be set through setter.
@@ -91,9 +91,8 @@
         }
     };
 
-    BluetoothDiscoverableEnabler(Context context, LocalBluetoothAdapter adapter,
+    BluetoothDiscoverableEnabler(LocalBluetoothAdapter adapter,
             Preference discoveryPreference) {
-        mContext = context;
         mUiHandler = new Handler();
         mLocalAdapter = adapter;
         mDiscoveryPreference = discoveryPreference;
@@ -105,11 +104,15 @@
         mVisibilityTimeoutPreference = visibilityPreference;
     }
 
-    public void resume() {
+    public void resume(Context context) {
         if (mLocalAdapter == null) {
             return;
         }
 
+        if (mContext != context) {
+            mContext = context;
+        }
+
         IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
         mContext.registerReceiver(mReceiver, filter);
         mDiscoveryPreference.setOnPreferenceClickListener(this);
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 14c6054..68cf37a 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -156,7 +156,7 @@
         super.onResume();
 
         if (mDiscoverableEnabler != null) {
-            mDiscoverableEnabler.resume();
+            mDiscoverableEnabler.resume(getActivity());
         }
         getActivity().registerReceiver(mReceiver, mIntentFilter);
         if (mLocalAdapter != null) {
@@ -262,9 +262,9 @@
 
                 if (!isRestrictedAndNotPinProtected()) {
                     if (mDiscoverableEnabler == null) {
-                        mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(),
-                                mLocalAdapter, mMyDevicePreference);
-                        mDiscoverableEnabler.resume();
+                        mDiscoverableEnabler = new BluetoothDiscoverableEnabler(mLocalAdapter,
+                                mMyDevicePreference);
+                        mDiscoverableEnabler.resume(getActivity());
                         LocalBluetoothManager.getInstance(getActivity()).setDiscoverableEnabler(
                                 mDiscoverableEnabler);
                     }
diff --git a/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java b/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
index 8d71007..ed27697 100644
--- a/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
+++ b/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
@@ -82,7 +82,7 @@
         super.onResume();
         mManager.setForegroundActivity(getActivity());
         mAdvertisingEnabler.resume();
-        mDiscoverableEnabler.resume();
+        mDiscoverableEnabler.resume(getActivity());
     }
 
     @Override
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index 357183f..d5bfce2 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -328,14 +328,6 @@
         final boolean enabled = arguments.getBoolean(PrintSettingsFragment.EXTRA_CHECKED);
         mToggleSwitch.setCheckedInternal(enabled);
 
-        // Title.
-        SettingsActivity activity = (SettingsActivity) getActivity();
-        if (!activity.onIsHidingHeaders()) {
-            mOldActivityTitle = getActivity().getTitle();
-            String title = arguments.getString(PrintSettingsFragment.EXTRA_TITLE);
-            getActivity().getActionBar().setTitle(title);
-        }
-
         // Settings title and intent.
         String settingsTitle = arguments.getString(PrintSettingsFragment.EXTRA_SETTINGS_TITLE);
         String settingsComponentName = arguments.getString(
