[1mdiff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js[m
[1mindex dd49b7d..13b0de8 100644[m
[1m--- a/js/ui/workspaceThumbnail.js[m
[1m+++ b/js/ui/workspaceThumbnail.js[m
[36m@@ -143,15 +143,17 @@[m [mconst ThumbnailState = {[m
 [m
 /**[m
  * @metaWorkspace: a #Meta.Workspace[m
[32m+[m[32m * @thumbnailsBoxActor: a #ClutterActor[m
  */[m
[31m-function WorkspaceThumbnail(metaWorkspace) {[m
[31m-    this._init(metaWorkspace);[m
[32m+[m[32mfunction WorkspaceThumbnail(metaWorkspace, thumbnailsBoxActor) {[m
[32m+[m[32m    this._init(metaWorkspace, thumbnailsBoxActor);[m
 }[m
 [m
 WorkspaceThumbnail.prototype = {[m
[31m-    _init : function(metaWorkspace) {[m
[32m+[m[32m    _init : function(metaWorkspace, thumbnailsBoxActor) {[m
         this.metaWorkspace = metaWorkspace;[m
         this.monitorIndex = Main.layoutManager.primaryIndex;[m
[32m+[m[32m        this._thumbnailsBoxActor = thumbnailsBoxActor;[m
 [m
         this.actor = new St.Group({ reactive: true,[m
                                     clip_to_allocation: true,[m
[36m@@ -427,15 +429,25 @@[m [mWorkspaceThumbnail.prototype = {[m
         if (this.state > ThumbnailState.NORMAL)[m
             return DND.DragMotionResult.CONTINUE;[m
 [m
[31m-        let [w, h] = this.actor.get_transformed_size();[m
[32m+[m[32m        let h = this.actor.get_height();[m
         // Bubble up if we're in the "workspace cut".[m
[31m-        if (y < WORKSPACE_CUT_SIZE || y > h - WORKSPACE_CUT_SIZE)[m
[32m+[m[32m        let [HScale, VScale] = this.actor.get_scale();[m
[32m+[m[32m        if (y < WORKSPACE_CUT_SIZE / VScale || y > h - WORKSPACE_CUT_SIZE / VScale)[m
             return DND.DragMotionResult.CONTINUE;[m
 [m
[31m-        if (source.realWindow && !this._isMyWindow(source.realWindow))[m
[32m+[m[32m        let [stageX, stageY] = this.actor.get_position();[m
[32m+[m[32m        stageX += x / HScale;[m
[32m+[m[32m        stageY += y / VScale;[m
[32m+[m[32m        let [r, targX, targY] = this._thumbnailsBoxActor.transform_stage_point(stageX, stageY);[m
[32m+[m
[32m+[m[32m        if (source.realWindow && !this._isMyWindow(source.realWindow)) {[m
[32m+[m[32m            this._thumbnailsBoxActor._delegate.handleDragOver(source, actor, targX, targY, time);[m
             return DND.DragMotionResult.MOVE_DROP;[m
[31m-        if (source.shellWorkspaceLaunch)[m
[32m+[m[32m        }[m
[32m+[m[32m        if (source.shellWorkspaceLaunch) {[m
[32m+[m[32m            this._thumbnailsBoxActor._delegate.handleDragOver(source, actor, targX, targY, time);[m
             return DND.DragMotionResult.COPY_DROP;[m
[32m+[m[32m        }[m
 [m
         return DND.DragMotionResult.CONTINUE;[m
     },[m
[36m@@ -444,6 +456,12 @@[m [mWorkspaceThumbnail.prototype = {[m
         if (this.state > ThumbnailState.NORMAL)[m
             return false;[m
 [m
[32m+[m[32m        let h = this.actor.get_height();[m
[32m+[m[32m        // Bubble up if we're in the "workspace cut".[m
[32m+[m[32m        let [HScale, VScale] = this.actor.get_scale();[m
[32m+[m[32m        if (y < WORKSPACE_CUT_SIZE / VScale || y > h - WORKSPACE_CUT_SIZE / VScale)[m
[32m+[m[32m            return false;[m
[32m+[m
         if (source.realWindow) {[m
             let win = source.realWindow;[m
             if (this._isMyWindow(win))[m
[36m@@ -650,7 +668,7 @@[m [mThumbnailsBox.prototype = {[m
     addThumbnails: function(start, count) {[m
         for (let k = start; k < start + count; k++) {[m
             let metaWorkspace = global.screen.get_workspace_by_index(k);[m
[31m-            let thumbnail = new WorkspaceThumbnail(metaWorkspace);[m
[32m+[m[32m            let thumbnail = new WorkspaceThumbnail(metaWorkspace, this.actor);[m
             thumbnail.setPorthole(this._porthole.x, this._porthole.y,[m
                                   this._porthole.width, this._porthole.height);[m
             this._thumbnails.push(thumbnail);[m
