diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 23d1d61..98fcdea 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -181,10 +181,6 @@
         // A ViewGroup usually does not draw, but CellLayout needs to draw a rectangle to show
         // the user where a dragged item will land when dropped.
         setWillNotDraw(false);
-        // CellLayout guarantees its children are not laid out outside of its bounds,
-        // child clipping is thus unnecessary and disabling it offers better performance
-        // when we rotate the whole layout
-        setClipChildren(false);
         setClipToPadding(false);
         mLauncher = (Launcher) context;
 
diff --git a/src/com/android/launcher2/WidgetPreviewLoader.java b/src/com/android/launcher2/WidgetPreviewLoader.java
index 6c06e0f..68813d4 100644
--- a/src/com/android/launcher2/WidgetPreviewLoader.java
+++ b/src/com/android/launcher2/WidgetPreviewLoader.java
@@ -254,7 +254,7 @@
     }
 
     static class WidgetPreviewCacheDb extends SQLiteOpenHelper {
-        final static int DB_VERSION = 1;
+        final static int DB_VERSION = 2;
         final static String DB_NAME = "widgetpreviews.db";
         final static String TABLE_NAME = "shortcut_and_widget_previews";
         final static String COLUMN_NAME = "name";
@@ -280,7 +280,10 @@
 
         @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-            // We are still only on version 1
+            if (oldVersion != newVersion) {
+                // Delete all the records; they'll be repopulated as this is a cache
+                db.execSQL("DELETE FROM " + TABLE_NAME);
+            }
         }
     }
 
@@ -403,11 +406,6 @@
     }
 
     public Bitmap generateWidgetPreview(AppWidgetProviderInfo info, Bitmap preview) {
-        // should just read what's in the DB, and return it
-        // what's the method that's used?
-        // going to have to track down more or less how the DB stuff works
-        // when you long click on something, we're going to have to load the bigger preview at that
-        // time (worry about it later)
         int[] cellSpans = Launcher.getSpanForWidget(mLauncher, info);
         int maxWidth = maxWidthForWidgetPreview(cellSpans[0]);
         int maxHeight = maxHeightForWidgetPreview(cellSpans[1]);
@@ -526,7 +524,7 @@
             final Rect dest = mCachedAppWidgetPreviewDestRect.get();
             c.setBitmap(preview);
             src.set(0, 0, defaultPreview.getWidth(), defaultPreview.getHeight());
-            dest.set(x, 0, previewWidth, previewHeight);
+            dest.set(x, 0, x + previewWidth, previewHeight);
 
             Paint p = mCachedAppWidgetPreviewPaint.get();
             if (p == null) {
