diff --git a/pd/src/g_all_guis.c b/pd/src/g_all_guis.c
index ed0bdb28c7ae5cbf2a67fd42bd020c15e49a75df..62d3e6c717f0c9e889b59defd0d610081cfc938f 100644
--- a/pd/src/g_all_guis.c
+++ b/pd/src/g_all_guis.c
@@ -657,6 +657,8 @@ void scalehandle_draw_select(t_scalehandle *h, t_glist *canvas, int px, int py)
     int sx = h->h_scale ? SCALEHANDLE_WIDTH  : LABELHANDLE_WIDTH;
     int sy = h->h_scale ? SCALEHANDLE_HEIGHT : LABELHANDLE_HEIGHT;
 
+    scalehandle_draw_erase(h,canvas);
+
     if (!h->h_vis) {
         sys_vgui("canvas %s -width %d -height %d -bg $pd_colors(selection) -bd 0 "
             "-cursor %s\n", h->h_pathname, sx, sy, cursor);
@@ -672,9 +674,11 @@ void scalehandle_draw_select(t_scalehandle *h, t_glist *canvas, int px, int py)
             h->h_pathname, tags);
         scalehandle_bind(h);
         h->h_vis = 1;
+    /* not yet (this is not supported by current implementation)
     } else {
         sys_vgui(".x%x.c coords %s %d %d\n", canvas, h->h_pathname,
             x->x_obj.te_xpix+px-sx, x->x_obj.te_ypix+py-sy);
+        sys_vgui("raise %s\n", h->h_pathname); */
     }
 }
 
diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c
index 01ff0014e3505144fa8777d88931190154be3260..bffd220d965be2579c6f588ca67a399fbb100695 100644
--- a/pd/src/g_canvas.c
+++ b/pd/src/g_canvas.c
@@ -711,11 +711,6 @@ void canvas_draw_gop_resize_hooks(t_canvas* x)
         sprintf(sh->h_pathname, ".x%lx.h%lx", (t_int)x, (t_int)sh);
         sprintf(mh->h_pathname, ".x%lx.h%lx", (t_int)x, (t_int)mh);
 
-        // Need to reset handles' vis values because they are erased via map
-        // (when applying properties, for instance)
-        scalehandle_draw_erase(sh,x);
-        scalehandle_draw_erase(mh,x);
-
         scalehandle_draw_select(sh,x,
             -1-x->gl_obj.te_xpix+x->gl_xmargin + x->gl_pixwidth,
             -1-x->gl_obj.te_ypix+x->gl_ymargin + x->gl_pixheight/*,GOP_resblob*/);