diff --git a/js/ui/workspaces.js b/js/ui/workspaces.js
index 37a9c1d..1696cc9 100644
--- a/js/ui/workspaces.js
+++ b/js/ui/workspaces.js
@@ -565,21 +565,63 @@ Workspace.prototype = {
 
         for (let i = 1; i < this._windows.length; i++) {
             let clone = this._windows[i];
-            Tweener.addTween(clone.actor,
-                             { x: clone.origX,
-                               y: clone.origY,
-                               scale_x: 1.0,
-                               scale_y: 1.0,
-                               workspace_relative: this,
-                               time: Overlay.ANIMATION_TIME,
-                               opacity: 255,
-                               transition: "easeOutQuad"
-                             });
+            if (clone.realWindow.meta_window.showing_on_its_workspace()) {
+                Tweener.addTween(clone.actor,
+                                 { x: clone.origX,
+                                   y: clone.origY,
+                                   scale_x: 1.0,
+                                   scale_y: 1.0,
+                                   workspace_relative: this,
+                                   time: Overlay.ANIMATION_TIME,
+                                   opacity: 255,
+                                   transition: "easeOutQuad"
+                                 });
+            } else {
+                let rect = new Meta.Rectangle;
+                let res = clone.realWindow.meta_window.get_icon_geometry(rect);
+
+                clone.actor.move_anchor_point_from_gravity(Clutter.Gravity.CENTER);
+
+                if (res) {
+                    Tweener.addTween(clone.actor,
+                                     { x: rect.x + (rect.width / 2),
+                                       y: rect.y + (rect.height / 2),
+                                       workspace_relative: this,
+                                       time: Overlay.ANIMATION_TIME,
+                                       transition: "easeOutQuad",
+                                       onComplete: this._zoomFromOverlayDone,
+                                       onCompleteParams: [clone.actor]
+                                     });
+                    Tweener.addTween(clone.actor,
+                                     { scale_x: 0.1,
+                                       scale_y: 0.1,
+                                       opacity: 50,
+                                       workspace_relative: this,
+                                       time: Overlay.ANIMATION_TIME,
+                                       transition: "easeInQuad"
+                                     });
+               } else {
+                   // It seems that we don't have a panel; shrink the window in-place 
+                   Tweener.addTween(clone.actor,
+                                    { scale_x: 0,
+                                      scale_y: 0,
+                                      workspace_relative: this,
+                                      time: Overlay.ANIMATION_TIME,
+                                      transition: "linear",
+                                      onComplete: this._zoomFromOverlayDone,
+                                      onCompleteParams: [clone.actor]
+                                    });
+               }
+            }
         }
 
         this._visible = false;        
     },
 
+    _ZoomFromOverlayDone : function(actor) {
+        actor.move_anchor_point_from_gravity(Clutter.Gravity.NORTH_WEST)
+    },
+
     // Animates grid shrinking/expanding when a row or column
     // of workspaces is added or removed
     resizeToGrid : function (oldScale) {
