diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 0e4e33a..2446f05 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -64,7 +64,7 @@
     <string name="menu_wallpaper" msgid="5837429080911269832">"Wallpaper"</string>
     <string name="menu_search" msgid="4826514464423239041">"Telusuri"</string>
     <string name="menu_notifications" msgid="6424587053194766192">"Pemberitahuan"</string>
-    <string name="menu_settings" msgid="3946232973327980394">"Setelan sistem"</string>
+    <string name="menu_settings" msgid="3946232973327980394">"Pengaturan sistem"</string>
     <string name="menu_help" msgid="4901160661634590633">"Bantuan"</string>
     <string name="cab_menu_delete_app" msgid="4089398025537640349">"Copot pemasangan apl"</string>
     <string name="cab_menu_app_info" msgid="914548323652698884">"Detail apl"</string>
@@ -76,10 +76,10 @@
     <string name="permdesc_install_shortcut" msgid="8634424803272077038">"Mengizinkan apl menambahkan pintasan tanpa campur tangan pengguna."</string>
     <string name="permlab_uninstall_shortcut" msgid="7696645932555926449">"copot pemasangan pintasan"</string>
     <string name="permdesc_uninstall_shortcut" msgid="274355570620220977">"Mengizinkan apl menghapus pintasan tanpa campur tangan pengguna."</string>
-    <string name="permlab_read_settings" msgid="3452408290738106747">"baca setelan dan pintasan Beranda"</string>
-    <string name="permdesc_read_settings" msgid="5788109303585403679">"Mengizinkan apl membaca setelan dan pintasan di layar Utama."</string>
-    <string name="permlab_write_settings" msgid="1360567537236705628">"tuliskan setelan dan pintasan Beranda"</string>
-    <string name="permdesc_write_settings" msgid="8530105489115785531">"Mengizinkan apl mengubah setelan dan pintasan di layar Utama."</string>
+    <string name="permlab_read_settings" msgid="3452408290738106747">"baca pengaturan dan pintasan Beranda"</string>
+    <string name="permdesc_read_settings" msgid="5788109303585403679">"Mengizinkan apl membaca pengaturan dan pintasan di layar Utama."</string>
+    <string name="permlab_write_settings" msgid="1360567537236705628">"tuliskan pengaturan dan pintasan Beranda"</string>
+    <string name="permdesc_write_settings" msgid="8530105489115785531">"Mengizinkan apl mengubah pengaturan dan pintasan di layar Utama."</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Masalah memuat widget"</string>
     <string name="uninstall_system_app_text" msgid="6429814133777046491">"Ini adalah apl sistem dan tidak dapat dicopot pemasangannya."</string>
     <string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 0fab2e2..119102c 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -101,6 +101,6 @@
     <string name="folder_tap_to_close" msgid="1335478160661137579">"Tocca per chiudere la cartella"</string>
     <string name="folder_tap_to_rename" msgid="5201612989905472442">"Tocca per salvare nuovo nome"</string>
     <string name="folder_closed" msgid="3130534551370511932">"Cartella chiusa"</string>
-    <string name="folder_renamed" msgid="7951233572858053642">"Nome della cartella sostituito con <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="folder_renamed" msgid="7951233572858053642">"Cartella rinominata in <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_name_format" msgid="3051680259794759037">"Cartella: <xliff:g id="NAME">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml
index 0e7d63c..882de23 100644
--- a/res/values-sw600dp-land/dimens.xml
+++ b/res/values-sw600dp-land/dimens.xml
@@ -15,8 +15,9 @@
 -->
 
 <resources>
-    <dimen name="app_icon_size">65dp</dimen>
-    <dimen name="app_icon_padding_top">2dp</dimen>
+    <dimen name="app_icon_padding_top">0dp</dimen>
+    <dimen name="app_icon_drawable_padding_land">0dp</dimen>
+    <integer name="app_icon_scale_percent">90</integer>
 
 <!-- Hotseat -->
     <dimen name="hotseat_cell_width">75dp</dimen>
@@ -27,6 +28,7 @@
     <dimen name="workspace_cell_height">86dp</dimen>
     <dimen name="workspace_width_gap">32dp</dimen>
     <dimen name="workspace_height_gap">0dp</dimen>
+    <dimen name="workspace_icon_text_size">11sp</dimen>
 
 <!-- Folders -->
     <!-- The size of the image which sits behind the preview of the folder contents -->
diff --git a/res/values-sw600dp-port/dimens.xml b/res/values-sw600dp-port/dimens.xml
index 8e8455d..9565992 100644
--- a/res/values-sw600dp-port/dimens.xml
+++ b/res/values-sw600dp-port/dimens.xml
@@ -16,6 +16,7 @@
 
 <resources>
 <!-- Workspace -->
+    <integer name="app_icon_scale_percent">-1</integer>
     <dimen name="workspace_width_gap">0dp</dimen>
     <dimen name="workspace_height_gap">32dp</dimen>
 
diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml
index a6402ae..0fb8d33 100644
--- a/res/values-sw720dp/dimens.xml
+++ b/res/values-sw720dp/dimens.xml
@@ -34,7 +34,7 @@
     <dimen name="app_widget_preview_padding_top">10dp</dimen>
 
     <!-- Size of icons in workspace -->
-    <dimen name="app_icon_size">72dp</dimen>
+    <integer name="app_icon_scale_percent">-1</integer>
     <integer name="app_icon_hotseat_scale_percent">-1</integer>
 
     <dimen name="all_apps_button_vertical_padding">4dip</dimen>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 890e216..4a69f4a 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -47,8 +47,10 @@
     <dimen name="hotseat_width_gap">-1dp</dimen>
     <dimen name="hotseat_height_gap">-1dp</dimen>
     <dimen name="workspace_overscroll_drawable_padding">0dp</dimen>
+    <dimen name="workspace_icon_text_size">12sp</dimen>
 
     <dimen name="app_icon_drawable_padding">6dp</dimen>
+    <dimen name="app_icon_drawable_padding_land">2dp</dimen>
     <dimen name="app_icon_padding_top">8dp</dimen>
 
 <!-- QSB -->
@@ -66,6 +68,7 @@
     <dimen name="apps_customize_tab_bar_height">52dp</dimen>
     <dimen name="apps_customize_tab_bar_margin_top">0dp</dimen>
     <dimen name="app_icon_size">48dp</dimen>
+    <integer name="app_icon_scale_percent">-1</integer>
     <integer name="app_icon_hotseat_scale_percent">-1</integer>
     <!-- The width can be 72dp because we don't have L/R padding -->
     <dimen name="apps_customize_cell_width">74dp</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index f5224d2..6506f95 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -62,7 +62,7 @@
         <item name="android:gravity">center_horizontal</item>
         <item name="android:singleLine">true</item>
         <item name="android:ellipsize">marquee</item>
-        <item name="android:textSize">12sp</item>
+        <item name="android:textSize">@dimen/workspace_icon_text_size</item>
         <item name="android:textColor">@color/workspace_icon_text_color</item>
         <item name="android:shadowRadius">2.0</item>
         <item name="android:shadowColor">#B0000000</item>
@@ -77,7 +77,7 @@
     </style>
 
     <style name="WorkspaceIcon.Landscape">
-        <item name="android:drawablePadding">2dp</item>
+        <item name="android:drawablePadding">@dimen/app_icon_drawable_padding_land</item>
         <item name="android:paddingLeft">4dp</item>
         <item name="android:paddingRight">4dp</item>
         <item name="android:paddingTop">@dimen/app_icon_padding_top</item>
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java
index b41a02e..623c6ff 100644
--- a/src/com/android/launcher2/BubbleTextView.java
+++ b/src/com/android/launcher2/BubbleTextView.java
@@ -295,7 +295,7 @@
         }
 
         // If text is transparent, don't draw any shadow
-        if (getCurrentTextColor() == android.R.color.transparent) {
+        if (getCurrentTextColor() == getResources().getColor(android.R.color.transparent)) {
             getPaint().clearShadowLayer();
             super.draw(canvas);
             return;
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index bbb0d7f..1aaba6d 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -138,6 +138,7 @@
 
     private boolean mIsHotseat = false;
     private final int mBubbleScalePercent;
+    private final int mBubbleHotseatScalePercent;
 
     public CellLayout(Context context) {
         this(context, null);
@@ -184,7 +185,8 @@
         mNormalBackground.setFilterBitmap(true);
         mActiveGlowBackground.setFilterBitmap(true);
 
-        mBubbleScalePercent = res.getInteger(R.integer.app_icon_hotseat_scale_percent);
+        mBubbleScalePercent = res.getInteger(R.integer.app_icon_scale_percent);
+        mBubbleHotseatScalePercent = res.getInteger(R.integer.app_icon_hotseat_scale_percent);
 
         // Initialize the data structures used for the drag visualization.
 
@@ -585,6 +587,34 @@
         return addViewToCellLayout(child, index, childId, params, markCells, false);
     }
 
+    private void scaleChild(BubbleTextView bubbleChild, float pivot, int scalePercent) {
+        // If we haven't measured the child yet, do it now
+        // (this happens if we're being dropped from all-apps
+        if (bubbleChild.getLayoutParams() instanceof LayoutParams &&
+                (bubbleChild.getMeasuredWidth() | bubbleChild.getMeasuredHeight()) == 0) {
+            getChildrenLayout().measureChild(bubbleChild);
+        }
+        int measuredWidth = bubbleChild.getMeasuredWidth();
+        int measuredHeight = bubbleChild.getMeasuredHeight();
+
+        float scale = scalePercent / 100f;
+        bubbleChild.setPivotX(pivot);
+        bubbleChild.setPivotY(pivot);
+        bubbleChild.setScaleX(scale);
+        bubbleChild.setScaleY(scale);
+        bubbleChild.setTranslationX(measuredWidth * (1 - scale) / 2);
+        bubbleChild.setTranslationY(measuredHeight * (1 - scale) / 2);
+    }
+
+    private void resetChild(BubbleTextView bubbleChild) {
+        bubbleChild.setScaleX(1f);
+        bubbleChild.setScaleY(1f);
+        bubbleChild.setTranslationX(0f);
+        bubbleChild.setTranslationY(0f);
+
+        bubbleChild.setTextColor(getResources().getColor(R.color.workspace_icon_text_color));
+    }
+
     public boolean addViewToCellLayout(View child, int index, int childId, LayoutParams params,
             boolean markCells, boolean allApps) {
         final LayoutParams lp = params;
@@ -596,32 +626,17 @@
         if (child instanceof BubbleTextView) {
             BubbleTextView bubbleChild = (BubbleTextView) child;
 
-            if (mIsHotseat && !allApps && mBubbleScalePercent >= 0) {
-                // If we haven't measured the child yet, do it now
-                // (this happens if we're being dropped from all-apps
-                if ((bubbleChild.getMeasuredWidth() | bubbleChild.getMeasuredHeight()) == 0) {
-                    getChildrenLayout().measureChild(bubbleChild);
-                }
-                int measuredWidth = bubbleChild.getMeasuredWidth();
-                int measuredHeight = bubbleChild.getMeasuredHeight();
+            // Start the child with 100% scale and visible text
+            resetChild(bubbleChild);
 
-                float bubbleScale = mBubbleScalePercent / 100f;
-                bubbleChild.setPivotX(0);
-                bubbleChild.setPivotY(0);
-                bubbleChild.setScaleX(bubbleScale);
-                bubbleChild.setScaleY(bubbleScale);
-                bubbleChild.setTranslationX(measuredWidth * (1 - bubbleScale) / 2);
-                bubbleChild.setTranslationY(measuredHeight * (1 - bubbleScale) / 2);
+            if (mIsHotseat && !allApps && mBubbleHotseatScalePercent >= 0) {
+                // Scale/make transparent for a hotseat
+                scaleChild(bubbleChild, 0f, mBubbleHotseatScalePercent);
 
-                bubbleChild.setTextColor(android.R.color.transparent);
-            } else {
-                bubbleChild.setScaleX(1f);
-                bubbleChild.setScaleY(1f);
-                bubbleChild.setTranslationX(0f);
-                bubbleChild.setTranslationY(0f);
-
-                bubbleChild.setTextColor(
-                        getResources().getColor(R.color.workspace_icon_text_color));
+                bubbleChild.setTextColor(getResources().getColor(android.R.color.transparent));
+            } else if (mBubbleScalePercent >= 0) {
+                // Else possibly still scale it if we need to for smaller icons
+                scaleChild(bubbleChild, 0f, mBubbleScalePercent);
             }
         }
 
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index d8a4384..4e0f980 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -2559,7 +2559,7 @@
     @Override
     public void onTrimMemory(int level) {
         super.onTrimMemory(level);
-        if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
+        if (level >= ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
             mAppsCustomizeTabHost.onTrimMemory();
         }
     }
