diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 2f8d128..ff1118c 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -570,6 +570,8 @@
                         mLauncher.getAppWidgetHost().createView(mContext, mWidgetLoadingId, pInfo);
                 info.boundWidget = hostView;
                 mWidgetCleanupState = WIDGET_INFLATED;
+                hostView.setVisibility(INVISIBLE);
+                mLauncher.getDragLayer().addView(hostView);
             }
         };
         post(mInflateWidgetRunnable);
@@ -596,6 +598,7 @@
             AppWidgetHostView widget = info.boundWidget;
             int widgetId = widget.getAppWidgetId();
             mLauncher.getAppWidgetHost().deleteAppWidgetId(widgetId);
+            mLauncher.getDragLayer().removeView(widget);
         }
         mWidgetCleanupState = WIDGET_NO_CLEANUP_REQUIRED;
         mWidgetLoadingId = -1;
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 9274f81..4e731a2 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -3003,23 +3003,11 @@
         }
     }
 
-    // The following methods deal with animating an item from external drop
-    void onPreDraw(View v) {
-        if (v instanceof ViewGroup) {
-            ViewGroup vg = (ViewGroup) v;
-            for (int i = 0; i < vg.getChildCount(); i++) {
-                View child = vg.getChildAt(i);
-                onPreDraw(child);
-            }
-        } else if (v instanceof TextView) {
-            ((TextView) v).onPreDraw();
-        }
-    }
-
     public Bitmap createWidgetBitmap(PendingAddWidgetInfo widgetInfo) {
         int[] unScaledSize = mLauncher.getWorkspace().estimateItemSize(widgetInfo.spanX,
                 widgetInfo.spanY, widgetInfo, false);
         View layout = widgetInfo.boundWidget;
+        mLauncher.getDragLayer().removeView(layout);
         layout.setVisibility(VISIBLE);
 
         int width = MeasureSpec.makeMeasureSpec(unScaledSize[0], MeasureSpec.EXACTLY);
@@ -3030,7 +3018,6 @@
 
         layout.measure(width, height);
         layout.layout(0, 0, unScaledSize[0], unScaledSize[1]);
-        onPreDraw(layout);
         layout.draw(c);
         c.setBitmap(null);
         return b;
