diff --git a/res/drawable-hdpi/focused_application_background.9.png b/res/drawable-hdpi/focused_application_background.9.png
index 7bf37ef..1b11492 100644
--- a/res/drawable-hdpi/focused_application_background.9.png
+++ b/res/drawable-hdpi/focused_application_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/pressed_application_background.9.png b/res/drawable-hdpi/pressed_application_background.9.png
index a6cbe94..ece27fd 100644
--- a/res/drawable-hdpi/pressed_application_background.9.png
+++ b/res/drawable-hdpi/pressed_application_background.9.png
Binary files differ
diff --git a/res/drawable-mdpi/focused_application_background.9.png b/res/drawable-mdpi/focused_application_background.9.png
index 9d09b41..b27d693 100644
--- a/res/drawable-mdpi/focused_application_background.9.png
+++ b/res/drawable-mdpi/focused_application_background.9.png
Binary files differ
diff --git a/res/drawable-mdpi/pressed_application_background.9.png b/res/drawable-mdpi/pressed_application_background.9.png
index b79536a..1fd727e 100644
--- a/res/drawable-mdpi/pressed_application_background.9.png
+++ b/res/drawable-mdpi/pressed_application_background.9.png
Binary files differ
diff --git a/res/drawable/pressed_application_background.9.png b/res/drawable/pressed_application_background.9.png
index b09f595..754af48 100644
--- a/res/drawable/pressed_application_background.9.png
+++ b/res/drawable/pressed_application_background.9.png
Binary files differ
diff --git a/res/layout-xlarge/all_apps_paged_view_application.xml b/res/layout-xlarge/all_apps_paged_view_application.xml
index 48b5712..a080bcec 100644
--- a/res/layout-xlarge/all_apps_paged_view_application.xml
+++ b/res/layout-xlarge/all_apps_paged_view_application.xml
@@ -28,4 +28,4 @@
     android:layout_height="match_parent"
     android:gravity="center_horizontal"
 
-    style="@style/WorkspaceIcon.Portrait" />
+    style="@style/WorkspaceIcon.AllApps" />
diff --git a/res/values-id/strings.xml b/res/values-in/strings.xml
similarity index 100%
rename from res/values-id/strings.xml
rename to res/values-in/strings.xml
diff --git a/res/values-he/strings.xml b/res/values-iw/strings.xml
similarity index 100%
rename from res/values-he/strings.xml
rename to res/values-iw/strings.xml
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3305299..1e2dba2 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -49,6 +49,10 @@
         <item name="android:paddingRight">5dip</item>
     </style>
 
+    <style name="WorkspaceIcon.AllApps">
+        <item name="android:background">@null</item>
+    </style>
+
     <style name="WorkspaceIcon.Portrait">
         <item name="android:drawablePadding">5dip</item>
         <item name="android:paddingTop">4dip</item>
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java
index 89a6303..113f35d 100644
--- a/src/com/android/launcher2/BubbleTextView.java
+++ b/src/com/android/launcher2/BubbleTextView.java
@@ -26,7 +26,6 @@
 import android.graphics.drawable.Drawable;
 import android.text.Layout;
 import android.util.AttributeSet;
-import android.view.View.MeasureSpec;
 
 import com.android.launcher.R;
 
@@ -40,8 +39,6 @@
     static final float PADDING_H = 8.0f;
     static final float PADDING_V = 3.0f;
 
-    private int mAppCellWidth;
-
     private final RectF mRect = new RectF();
     private Paint mPaint;
     private float mBubbleColorAlpha;
@@ -78,7 +75,6 @@
         mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
         mPaint.setColor(bubbleColor);
         mBubbleColorAlpha = Color.alpha(bubbleColor) / 255.0f;
-        mAppCellWidth = (int) res.getDimension(R.dimen.app_icon_size);
 
         final float scale = res.getDisplayMetrics().density;
         mCornerRadius = CORNER_RADIUS * scale;
@@ -166,20 +162,6 @@
     }
 
     @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        if (w > 0 && h > 0) {
-            // Temporary Workaround: We need to set padding to compress the text so that we can draw
-            // a hotdog around it.  Currently, the background images prevent us from applying the
-            // padding in XML, so we are doing this programmatically
-            int d = w - mAppCellWidth;
-            int pL = d - (d / 2);
-            int pR = d - pL;
-            setPadding(pL, getPaddingTop(), pR, getPaddingBottom());
-        }
-        super.onSizeChanged(w, h, oldw, oldh);
-    }
-
-    @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
         if (mBackground != null) mBackground.setCallback(this);
diff --git a/src/com/android/launcher2/CacheableTextView.java b/src/com/android/launcher2/CacheableTextView.java
index eba29ec..50da7cd 100644
--- a/src/com/android/launcher2/CacheableTextView.java
+++ b/src/com/android/launcher2/CacheableTextView.java
@@ -18,9 +18,10 @@
 
 import android.content.Context;
 import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
 import android.graphics.Canvas;
 import android.graphics.Paint;
-import android.graphics.Bitmap.Config;
+import android.graphics.Rect;
 import android.text.Layout;
 import android.util.AttributeSet;
 import android.widget.TextView;
@@ -66,7 +67,13 @@
     }
 
     public void buildAndEnableCache() {
-        if (getLayout() == null) {
+        // Defers building the cache until the next draw to allow measuring
+        // and laying out.
+        buildAndEnableCache(false);
+    }
+
+    public void buildAndEnableCache(boolean isImmediate) {
+        if (getLayout() == null || !isImmediate) {
             mWaitingToGenerateCache = true;
             return;
         }
@@ -94,8 +101,20 @@
         int height = (int) (textCacheBottom - mTextCacheTop);
 
         if (width != 0 && height != 0) {
-            mCache = Bitmap.createBitmap(width, height, Config.ARGB_8888);
-            mCacheCanvas.setBitmap(mCache);
+            if (mCache != null) {
+                if (mCache.getWidth() != width || mCache.getHeight() != height) {
+                    mCache.recycle();
+                    mCache = null;
+                }
+            }
+            if (mCache == null) {
+                mCache = Bitmap.createBitmap(width, height, Config.ARGB_8888);
+                mCacheCanvas.setBitmap(mCache);
+            } else {
+                mCacheCanvas.drawColor(0x00000000);
+            }
+
+            mCacheCanvas.save();
             mCacheCanvas.translate(-mTextCacheLeft, -mTextCacheTop);
 
             mIsBuildingCache = true;
@@ -103,6 +122,7 @@
             draw(mCacheCanvas);
             setAlpha(prevAlpha);
             mIsBuildingCache = false;
+            mCacheCanvas.restore();
 
             // A hack-- we set the text to be one space (we don't make it empty just to avoid any
             // potential issues with text measurement, like line height, etc.) so that the text view
@@ -114,10 +134,10 @@
 
     public void draw(Canvas canvas) {
         if (mWaitingToGenerateCache && !mIsBuildingCache) {
-            buildAndEnableCache();
+            buildAndEnableCache(true);
             mWaitingToGenerateCache = false;
         }
-        if (mCache != null) {
+        if (mCache != null && !mIsBuildingCache) {
             canvas.drawBitmap(mCache, mTextCacheLeft - mTextCacheScrollX + mScrollX,
                     mTextCacheTop, mCachePaint);
         }
