diff --git a/pd/src/g_scalar.c b/pd/src/g_scalar.c
index f45cbee9446c44606cf438d948053e80cd25f693..6c0a342a853beeac373cc322f228512231ab99dd 100644
--- a/pd/src/g_scalar.c
+++ b/pd/src/g_scalar.c
@@ -1103,17 +1103,20 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
 
 static void scalar_doredraw(t_gobj *client, t_glist *glist)
 {
-    scalar_vis(client, glist, 0);
-    scalar_vis(client, glist, 1);
-    if (glist_isselected(glist_getcanvas(glist), (t_gobj *)glist))
+    if (glist_isvisible(glist))
     {
-        //fprintf(stderr,"yes\n");
-        /* I still don't understand what this does... should probably
-           do some scalar gop tests to see if it is actually needed... */
-        //sys_vgui("pdtk_select_all_gop_widgets .x%lx %lx %d\n",
-        //    glist_getcanvas(glist), glist, 1);
+        scalar_vis(client, glist, 0);
+        scalar_vis(client, glist, 1);
+        if (glist_isselected(glist_getcanvas(glist), (t_gobj *)glist))
+        {
+            //fprintf(stderr,"yes\n");
+            /* I still don't understand what this does... should probably
+               do some scalar gop tests to see if it is actually needed... */
+            //sys_vgui("pdtk_select_all_gop_widgets .x%lx %lx %d\n",
+            //    glist_getcanvas(glist), glist, 1);
+        }
+        canvas_getscroll(glist_getcanvas(glist));
     }
-    canvas_getscroll(glist_getcanvas(glist));
 }
 
 void scalar_redraw(t_scalar *x, t_glist *glist)