diff --git a/pd/src/g_all_guis.c b/pd/src/g_all_guis.c
index d0b34989f366525baffdcb555807d851b44f2760..9bfdf505bf64952353fbbf020fec220eb05f5874 100644
--- a/pd/src/g_all_guis.c
+++ b/pd/src/g_all_guis.c
@@ -950,9 +950,9 @@ const char *nlet_tag, const char *class_tag) {
     h->h_vis = 1;
 }
 
-void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas, const char *class_tag) {
+void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas, const char *class_tag, int sx, int sy) {
     char *nlet_tag = iem_get_tag(canvas, (t_iemgui *)x);
-    scalehandle_draw_select(x->x_handle,canvas,x->x_w-1,x->x_h-1,nlet_tag,class_tag);
+    scalehandle_draw_select(x->x_handle,canvas,sx,sy,nlet_tag,class_tag);
     if (strcmp(x->x_lab->s_name, "empty") != 0)
     {
         scalehandle_draw_select(x->x_lhandle,canvas,x->x_ldx,x->x_ldy,nlet_tag,class_tag);
diff --git a/pd/src/g_all_guis.h b/pd/src/g_all_guis.h
index 2ff856009ac68089b989595d8ecd72a78afb7487..e28f90d0df196689497f99ad299535dec5c7b8a7 100644
--- a/pd/src/g_all_guis.h
+++ b/pd/src/g_all_guis.h
@@ -405,7 +405,7 @@ EXTERN void canvas_apply_setundo(t_canvas *x, t_gobj *y);
 // scalehandle code, as refactored by Mathieu
 EXTERN void scalehandle_bind(t_scalehandle *h);
 EXTERN void scalehandle_draw_select(t_scalehandle *h, t_glist *canvas, int px, int py, const char *nlet_tag, const char *class_tag);
-EXTERN void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas, const char *class_tag);
+EXTERN void scalehandle_draw_select2(t_iemgui *x, t_glist *canvas, const char *class_tag, int sx, int sy);
 EXTERN void scalehandle_draw_erase(t_scalehandle *h, t_glist *canvas);
 EXTERN void scalehandle_draw_erase2(t_iemgui *x, t_glist *canvas);
 EXTERN void scalehandle_draw_new(t_scalehandle *x, t_glist *canvas);
diff --git a/pd/src/g_bang.c b/pd/src/g_bang.c
index 807294b0ba3e2f42d89a6ad2cf78b8ebb9fb4c8e..ffa17069f718fd0697f306b0866dfd9b8b77bd9c 100644
--- a/pd/src/g_bang.c
+++ b/pd/src/g_bang.c
@@ -237,7 +237,8 @@ void bng_draw_select(t_bng* x, t_glist* glist)
                      "-stroke $pd_colors(selection)\n", canvas, x);
             sys_vgui(".x%lx.c itemconfigure %lxLABEL "
                      "-fill $pd_colors(selection)\n", canvas, x);
-            scalehandle_draw_select2(&x->x_gui,glist,"BNG");
+            scalehandle_draw_select2(&x->x_gui,glist,"BNG",
+                x->x_gui.x_w-1,x->x_gui.x_h-1);
         }
         sys_vgui(".x%lx.c addtag selected withtag %lxBNG\n", canvas, x);
     }
diff --git a/pd/src/g_hdial.c b/pd/src/g_hdial.c
index de08254d4ca6a5ad4ad4a27fdf601df72334f491..0d8eb8798a833144b076e89ac7c7053068db4931 100644
--- a/pd/src/g_hdial.c
+++ b/pd/src/g_hdial.c
@@ -257,7 +257,8 @@ void hradio_draw_select(t_hradio* x, t_glist* glist)
                 }
                 sys_vgui(".x%lx.c itemconfigure %lxLABEL "
                          "-fill $pd_colors(selection)\n", canvas, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"HRDO");
+                scalehandle_draw_select2(&x->x_gui,glist,"HRDO",
+                    x->x_gui.x_w*x->x_number-1,x->x_gui.x_h-1);
             }
             sys_vgui(".x%lx.c addtag selected withtag %lxHRDO\n", canvas, x);
         }
diff --git a/pd/src/g_hslider.c b/pd/src/g_hslider.c
index 3f8e79196eb670c9fcfb6c2c95cdfcf8c9fecf97..2b780888b38539ee01c85445f0cff5784817f5a9 100644
--- a/pd/src/g_hslider.c
+++ b/pd/src/g_hslider.c
@@ -238,7 +238,8 @@ static void hslider_draw_select(t_hslider* x,t_glist* glist)
                          "-stroke $pd_colors(selection)\n", canvas, x);
                 sys_vgui(".x%lx.c itemconfigure %lxLABEL "
                          "-fill $pd_colors(selection)\n", canvas, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"HSLDR");
+                scalehandle_draw_select2(&x->x_gui,glist,"HSLDR",
+                    x->x_gui.x_w+5-1,x->x_gui.x_h-1);
             }
             sys_vgui(".x%lx.c addtag selected withtag %lxHSLDR\n", canvas, x);
         }
diff --git a/pd/src/g_mycanvas.c b/pd/src/g_mycanvas.c
index 08984e69c45b37ba773ff7a3b78e21fa395c05a9..c75243efd5ce30fa2e757d4c5398677ffe5aa236 100644
--- a/pd/src/g_mycanvas.c
+++ b/pd/src/g_mycanvas.c
@@ -144,7 +144,8 @@ void my_canvas_draw_select(t_my_canvas* x, t_glist* glist)
                 char *nlet_tag = iem_get_tag(glist, (t_iemgui *)x);
                 sys_vgui(".x%lx.c itemconfigure %lxBASE "
                          "-stroke $pd_colors(selection)\n", canvas, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"MYCNV");
+                scalehandle_draw_select2(&x->x_gui,glist,"MYCNV",
+                    x->x_vis_w,x->x_vis_h);
             }
             sys_vgui(".x%lx.c addtag selected withtag %lxMYCNV\n", canvas, x);
         }
diff --git a/pd/src/g_numbox.c b/pd/src/g_numbox.c
index 5423423fc190bf7827f819bc08ab8f0943489ff5..bced2fdbc1559cb0dd564b79320ea496066898dc 100644
--- a/pd/src/g_numbox.c
+++ b/pd/src/g_numbox.c
@@ -458,7 +458,8 @@ static void my_numbox_draw_select(t_my_numbox *x, t_glist *glist)
                          "-stroke $pd_colors(selection)\n", canvas, x, x);
                 sys_vgui(".x%lx.c itemconfigure {%lxLABEL||%lxNUMBER} "
                          "-fill $pd_colors(selection)\n", canvas, x, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"NUM");
+                scalehandle_draw_select2(&x->x_gui,glist,"NUM",
+                    x->x_numwidth-1,x->x_gui.x_h-1);
             }
             sys_vgui(".x%lx.c addtag selected withtag %lxNUM\n", canvas, x);
         }
diff --git a/pd/src/g_toggle.c b/pd/src/g_toggle.c
index e8869bb58507c93b20e16c87cd8f97020c7f890a..067b6c33be518971ab18a2cce05be42a572d3db2 100644
--- a/pd/src/g_toggle.c
+++ b/pd/src/g_toggle.c
@@ -259,7 +259,8 @@ void toggle_draw_select(t_toggle* x, t_glist* glist)
                          "-stroke $pd_colors(selection)\n", canvas, x);
                 sys_vgui(".x%lx.c itemconfigure %lxLABEL "
                          "-fill $pd_colors(selection)\n", canvas, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"TGL");
+                scalehandle_draw_select2(&x->x_gui,glist,"TGL",
+                    x->x_gui.x_w-1,x->x_gui.x_h-1);
             }
             sys_vgui(".x%lx.c addtag selected withtag %lxTGL\n", canvas, x);
         }
diff --git a/pd/src/g_vdial.c b/pd/src/g_vdial.c
index 93d05594b4b75b929db9376e1ee7db7d9bd75d53..f324a287216c4a73f323a5963343b89992426ece 100644
--- a/pd/src/g_vdial.c
+++ b/pd/src/g_vdial.c
@@ -259,7 +259,8 @@ void vradio_draw_select(t_vradio* x, t_glist* glist)
                 }
                 sys_vgui(".x%lx.c itemconfigure %lxLABEL "
                          "-fill $pd_colors(selection)\n", canvas, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"VRDO");
+                scalehandle_draw_select2(&x->x_gui,glist,"VRDO",
+                    x->x_gui.x_w-1,x->x_gui.x_h*x->x_number-1);
             }
 
             sys_vgui(".x%lx.c addtag selected withtag %lxVRDO\n", canvas, x);
diff --git a/pd/src/g_vslider.c b/pd/src/g_vslider.c
index b1897b6a5c17975d81003ae931f8d50111e29156..91b3d25d3dca95c4a21f8648b74ab7351f747a38 100644
--- a/pd/src/g_vslider.c
+++ b/pd/src/g_vslider.c
@@ -254,7 +254,8 @@ static void vslider_draw_select(t_vslider *x, t_glist *glist)
                          "-stroke $pd_colors(selection)\n", canvas, x);
                 sys_vgui(".x%lx.c itemconfigure %lxLABEL "
                          "-fill $pd_colors(selection)\n", canvas, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"VSLDR");
+                scalehandle_draw_select2(&x->x_gui,glist,"VSLDR",
+                    x->x_gui.x_w-1,x->x_gui.x_h+5-1);
             }
             sys_vgui(".x%lx.c addtag selected withtag %lxVSLDR\n", canvas, x);
         }
diff --git a/pd/src/g_vumeter.c b/pd/src/g_vumeter.c
index 5b4d3dc86367a887b22796e20cbbe32d7653fd7c..da0d0cd1a51511661bfdbf7db363eab4576297d8 100644
--- a/pd/src/g_vumeter.c
+++ b/pd/src/g_vumeter.c
@@ -442,7 +442,8 @@ static void vu_draw_select(t_vu* x,t_glist* glist)
                 }
                 sys_vgui(".x%lx.c itemconfigure %lxLABEL "
                          "-fill $pd_colors(selection)\n", canvas, x);
-                scalehandle_draw_select2(&x->x_gui,glist,"BNG");
+                scalehandle_draw_select2(&x->x_gui,glist,"BNG",
+                    x->x_gui.x_w+2-1,x->x_gui.x_h+4-1);
             }
 
             sys_vgui(".x%lx.c addtag selected withtag %lxVU\n", canvas, x);