diff --git a/pd/src/g_scalar.c b/pd/src/g_scalar.c
index 6f2ed069119c03cab3c4f1dc47f5775c3db22c04..78efae57f1c68b29045371c2f73eb1707f68bc14 100644
--- a/pd/src/g_scalar.c
+++ b/pd/src/g_scalar.c
@@ -458,11 +458,13 @@ static void scalar_displace_withtag(t_gobj *z, t_glist *glist, int dx, int dy)
     sys_vgui(".x%lx.c coords {select%lx} %d %d %d %d\n", glist, x,
         x->sc_x1 - 1, x->sc_y1 - 1, x->sc_x2 + 1, x->sc_y2 + 1);
 
-    t_float xscale = glist_xtopixels(glist, 1) - glist_xtopixels(glist, 0);
-    t_float yscale = glist_ytopixels(glist, 1) - glist_ytopixels(glist, 0);
+    t_float xscale = glist_xtopixels(x->sc_selected, 1) -
+        glist_xtopixels(x->sc_selected, 0);
+    t_float yscale = glist_ytopixels(x->sc_selected, 1) -
+        glist_ytopixels(x->sc_selected, 0);
 
     sys_vgui(".x%lx.c itemconfigure {.scalar%lx} -matrix { {%g %g} {%g %g} {%d %d} }\n",
-        glist_getcanvas(glist), x->sc_vec, 1.0, 0.0, 0.0, 1.0, (int)glist_xtopixels(x->sc_selected, basex) + (x->sc_selected == glist ? 0 : dx), (int)glist_ytopixels(x->sc_selected, basey) + (x->sc_selected == glist ? 0 : dy));
+        glist_getcanvas(glist), x->sc_vec, xscale, 0.0, 0.0, yscale, (int)glist_xtopixels(x->sc_selected, basex) + (x->sc_selected == glist ? 0 : dx), (int)glist_ytopixels(x->sc_selected, basey) + (x->sc_selected == glist ? 0 : dy));
 
     //scalar_redraw(x, glist);
 }
@@ -534,7 +536,7 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
         sys_vgui(".x%lx.c create group -tags {.scalar%lx} "
             "-matrix { {%g %g} {%g %g} {%d %d} }\n",
             glist_getcanvas(owner), x->sc_vec,
-            1.0, 0.0, 0.0, 1.0, (int)glist_xtopixels(owner, basex), (int)glist_ytopixels(owner, basey)
+            xscale, 0.0, 0.0, yscale, (int)glist_xtopixels(owner, basex), (int)glist_ytopixels(owner, basey)
             );
         sys_vgui(".x%lx.c create group -tags {.dgroup%lx} -parent {.scalar%lx}\n",
             glist_getcanvas(owner), x->sc_vec, x->sc_vec);
@@ -682,7 +684,7 @@ static t_widgetbehavior scalar_widgetbehavior =
     scalar_delete,
     scalar_vis,
     scalar_click,
-	scalar_displace_withtag,
+    scalar_displace_withtag,
 };
 
 static void scalar_free(t_scalar *x)