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/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/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);
         }
