diff --git a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
index 16a6c7e..1d8dee3 100644
--- a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
+++ b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
@@ -30,7 +30,7 @@
 
     // TODO: change 'force' ref to be 'force.alpha' ref.
     function createDragBehavior(force, selectCb, atDragEnd,
-                                dragEnabled, clickEnabled) {
+                                dragEnabled, clickEnabled, zs) {
         var draggedThreshold = d3.scale.linear()
             .domain([0, 0.1])
             .range([5, 20])
@@ -70,9 +70,11 @@
         }
 
         function dragged(d) {
-            var threshold = draggedThreshold(force.alpha()),
+            var scale = zs ? zs.scale() : 1,
+                threshold = draggedThreshold(force.alpha()) / scale,
                 dx = d.oldX - d.px,
                 dy = d.oldY - d.py;
+
             if (Math.abs(dx) >= threshold || Math.abs(dy) >= threshold) {
                 d.dragged = true;
             }
@@ -83,8 +85,6 @@
             .origin(function(d) { return d; })
             .on('dragstart', function(d) {
                 if (clickEnabled() || dragEnabled()) {
-                    d3.event.sourceEvent.stopPropagation();
-
                     d.oldX = d.x;
                     d.oldY = d.y;
                     d.dragged = false;
@@ -104,7 +104,7 @@
                 }
             })
             .on('dragend', function(d) {
-                d3.event.sourceEvent.preventDefault();
+                d3.event.sourceEvent.stopPropagation();
 
                 if (d.dragStarted) {
                     d.dragStarted = false;
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
index c5e8251..97fac88 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
@@ -145,7 +145,8 @@
                             function () {}, // click event is no longer handled in the drag service
                             this.atDragEnd,
                             this.dragEnabled.bind(this),
-                            clickEnabled
+                            clickEnabled,
+                            t2zs
                         );
 
                         this.update();
