diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
index c9eee81..20532c1 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
@@ -87,6 +87,8 @@
     private boolean mIsAboveIcon;
     private boolean mIsAnimatingOpen;
 
+    private boolean mSrcIconDragStarted;
+
     /**
      * Sorts shortcuts in rank order, with manifest shortcuts coming before dynamic shortcuts.
      */
@@ -349,7 +351,8 @@
 
             boolean containerContainsTouch = x >= 0 && y >= 0 && x < getWidth() && y < getHeight();
             if (shouldStartDeferredDrag((int) x, (int) y, containerContainsTouch)) {
-                cleanupDeferredDrag();
+                mSrcIconDragStarted = true;
+                cleanupDeferredDrag(true);
                 mDeferredDragIcon.getParent().requestDisallowInterceptTouchEvent(false);
                 mDeferredDragIcon.getOnLongClickListener().onLongClick(mDeferredDragIcon);
                 mLauncher.getDragController().onTouchEvent(ev);
@@ -379,7 +382,7 @@
                 }
             }
         } else if (action == MotionEvent.ACTION_UP) {
-            cleanupDeferredDrag();
+            cleanupDeferredDrag(true);
             // Launch a shortcut if user was hovering over it.
             for (int i = 0; i < childCount; i++) {
                 DeepShortcutView shortcut = getShortcutAt(i);
@@ -389,7 +392,8 @@
                 }
             }
         } else if (action == MotionEvent.ACTION_CANCEL) {
-            cleanupDeferredDrag();
+            // Do not change the source icon visibility if we are already dragging the source icon.
+            cleanupDeferredDrag(!mSrcIconDragStarted);
         }
         return true;
     }
@@ -414,11 +418,13 @@
         return !containerContainsTouch && (newDistToEdge - distToEdge > mStartDragThreshold);
     }
 
-    public void cleanupDeferredDrag() {
+    public void cleanupDeferredDrag(boolean updateSrcVisibility) {
         if (mDragView != null) {
             mDragView.remove();
         }
-        mDeferredDragIcon.setVisibility(VISIBLE);
+        if (updateSrcVisibility) {
+            mDeferredDragIcon.setVisibility(VISIBLE);
+        }
     }
 
     @Override
