diff --git a/pd/src/g_scalar.c b/pd/src/g_scalar.c
index 313a5d50f12f75bc5fe0c18823fbe16f6807e6f2..cb72d59aabef63e775d084782adaa410ea7bd3f8 100644
--- a/pd/src/g_scalar.c
+++ b/pd/src/g_scalar.c
@@ -326,9 +326,6 @@ t_scalar *scalar_new(t_glist *owner, t_symbol *templatesym)
     x->sc_template = templatesym;
     gpointer_setglist(&gp, owner, &x->sc_gobj);
     word_init(x->sc_vec, template, &gp);
-    char buf[50];
-    sprintf(buf, "x%lx", (long unsigned int)x);
-    pd_bind(&x->sc_gobj.g_pd, gensym(buf));
     return (x);
 }
 
@@ -912,6 +909,8 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
 {
     //fprintf(stderr,"scalar_vis %d %lx\n", vis, (t_int)z);
     t_scalar *x = (t_scalar *)z;
+    char buf[50];
+    sprintf(buf, "x%lx", (long unsigned int)x);
 
     x->sc_bboxcache = 0;
 
@@ -980,6 +979,7 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
             (long unsigned int)x->sc_vec);
         gui_vmess("gui_scalar_draw_group", "xss",
             glist_getcanvas(owner), groupbuf, tagbuf);
+        pd_bind(&x->sc_gobj.g_pd, gensym(buf));
     }
 
     /* warning: don't need--- have recursive func. */
@@ -1007,6 +1007,7 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis)
         sprintf(tagbuf, "scalar%lx", (long unsigned int)x->sc_vec);
         gui_vmess("gui_scalar_erase", "xs",
             glist_getcanvas(owner), tagbuf);
+        pd_unbind(&x->sc_gobj.g_pd, gensym(buf));
     }
 
     sys_unqueuegui(x);
diff --git a/pd/src/g_template.c b/pd/src/g_template.c
index 190c12be15a1cdeb0bd3566c199b04f17b01386c..55e2d883086aa74667568de058e18d75165e11e8 100644
--- a/pd/src/g_template.c
+++ b/pd/src/g_template.c
@@ -416,7 +416,8 @@ static void template_conformarray(t_template *tfrom, t_template *tto,
     /* this routine searches for every scalar in the glist that belongs
     to the "from" template and makes it belong to the "to" template.  Descend
     glists recursively.
-    We don't handle redrawing here; this is to be filled in LATER... */
+    We don't do a redraw here, instead it happens when we change the
+    template (in glist_add). */
 
 t_array *garray_getarray(t_garray *x);