diff --git a/pd/src/g_array.c b/pd/src/g_array.c
index 2536eb75988072315a4de2cd97a641161ef70471..b138cd6f44bf478e636bdd7b94d5a617adc5b198 100644
--- a/pd/src/g_array.c
+++ b/pd/src/g_array.c
@@ -519,10 +519,14 @@ void canvas_menuarray(t_glist *canvas)
     if (canvas_hasarray(canvas)) return;
     t_glist *x = (t_glist *)canvas;
     pd_vmess(&x->gl_pd, gensym("editmode"), "i", 1);
-    char cmdbuf[200];
-    sprintf(cmdbuf, "pdtk_array_dialog %%s array%d 100 3 1 .x%lx black black\n",
-        ++gcount, (long unsigned int)canvas);
-    gfxstub_new(&x->gl_pd, x, cmdbuf);
+    //char cmdbuf[200];
+    gcount++;
+    gui_vmess("gui_create_array", "ssi",
+        canvas_tag(x), gfxstub_new2(&x->gl_pd, x),
+        gcount);
+    //sprintf(cmdbuf, "pdtk_array_dialog %%s array%d 100 3 1 .x%lx black black\n",
+    //    ++gcount, (long unsigned int)canvas);
+    //gfxstub_new(&x->gl_pd, x, cmdbuf);
 }
 
     /* called from canvas_dialog to return array properties for the gui */