diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c
index cc98c265ebed858a603eaead924e56a07925b445..b8f348b3f2500cc0353e76320724f2330096fb5e 100644
--- a/pd/src/g_editor.c
+++ b/pd/src/g_editor.c
@@ -6487,6 +6487,9 @@ static void canvas_paste(t_canvas *x)
 {
     if (!x->gl_editor)
         return;
+    // ico@vt.edu: prevent pasting in a toplevel garray window
+    if (x->gl_list && glist_istoplevel(x) && canvas_hasarray(x))
+        return;
     if (x->gl_editor->e_textedfor)
     {
             /* simulate keystrokes as if the copy buffer were typed in. */
diff --git a/pd/src/g_scalar.c b/pd/src/g_scalar.c
index 984accf40c4d82eeeb45a4253d3def5e9d2bf26d..e9f9de494509d366ee47603f1e59fc236243adc5 100644
--- a/pd/src/g_scalar.c
+++ b/pd/src/g_scalar.c
@@ -1264,6 +1264,7 @@ int scalar_doclick(t_word *data, t_template *template, t_scalar *sc,
 /* Unfortunately, nested gops don't yet handle scalar clicks correctly. The
    nested scalar seems not to receive the click.  However, the enter/leave
    messages happen just fine since most of their logic is in tcl/tk. */
+/* ico@vt.edu: I tried nested GOP and it appears to work ok */
 static int scalar_click(t_gobj *z, struct _glist *owner,
     int xpix, int ypix, int shift, int alt, int dbl, int doit)
 {