diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index af2f984..02ee950 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -1356,9 +1356,7 @@
             lp.isDragging = false;
             lp.dropped = true;
             lp.animateDrop = animate;
-            if (animate) {
-                child.setVisibility(View.INVISIBLE);
-            }
+            child.setVisibility(animate ? View.INVISIBLE : View.VISIBLE);
             child.requestLayout();
         }
     }
diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java
index b456030..45b359d 100644
--- a/src/com/android/launcher2/DragController.java
+++ b/src/com/android/launcher2/DragController.java
@@ -399,6 +399,7 @@
      */
     public void cancelDrag() {
         if (mDragging) {
+            // Should we also be calling onDragExit() here?
             mDragSource.onDropCompleted(null, false);
         }
         endDrag();
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index b248dd6..56055d9 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -2398,8 +2398,7 @@
         }
     }
 
-    public void onDragExit(DragSource source, int x, int y, int xOffset,
-            int yOffset, DragView dragView, Object dragInfo) {
+    private void doDragExit() {
         mWasSpringLoadedOnDragExit = mShrinkState == ShrinkState.SPRING_LOADED;
         if (mDragTargetLayout != null) {
             mDragTargetLayout.onDragExit();
@@ -2413,6 +2412,11 @@
         clearAllHovers();
     }
 
+    public void onDragExit(DragSource source, int x, int y, int xOffset,
+            int yOffset, DragView dragView, Object dragInfo) {
+        doDragExit();
+    }
+
     @Override
     public void getHitRect(Rect outRect) {
         // We want the workspace to have the whole area of the display (it will find the correct
@@ -2560,6 +2564,9 @@
         mDragController = dragController;
     }
 
+    /**
+     * Called at the end of a drag which originated on the workspace.
+     */
     public void onDropCompleted(View target, boolean success) {
         if (success) {
             if (target != this && mDragInfo != null) {
@@ -2571,8 +2578,11 @@
                 // final Object tag = mDragInfo.cell.getTag();
             }
         } else if (mDragInfo != null) {
-            boolean animateDrop = !mWasSpringLoadedOnDragExit;
-            ((CellLayout) getChildAt(mDragInfo.screen)).onDropChild(mDragInfo.cell, animateDrop);
+            // NOTE: When 'success' is true, onDragExit is called by the DragController before
+            // calling onDropCompleted(). We call it ourselves here, but maybe this should be
+            // moved into DragController.cancelDrag().
+            doDragExit();
+            ((CellLayout) getChildAt(mDragInfo.screen)).onDropChild(mDragInfo.cell, false);
         }
         mLauncher.unlockScreenOrientation();
         mDragOutline = null;
