diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c
index 303ecd14bf86eebee680d1e8be54f500630106ab..ffe807aaba2d8b1224a292dd0b3157f59635da04 100644
--- a/pd/src/g_canvas.c
+++ b/pd/src/g_canvas.c
@@ -497,6 +497,7 @@ t_canvas *canvas_new(void *dummy, t_symbol *sel, int argc, t_atom *argv)
     }
     x->gl_willvis = vis;
     x->gl_edit = !strncmp(x->gl_name->s_name, "Untitled", 8);
+    x->gl_edit_save = 0;
     x->gl_font = sys_nearestfontsize(font);
     x->gl_zoom = zoom;
     pd_pushsym(&x->gl_pd);
diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h
index 00df6a8b363ce2aeba77d072946377b05fd36a13..a5d7ed1166c0a9cb192c3c809af20e649e8e49aa 100644
--- a/pd/src/g_canvas.h
+++ b/pd/src/g_canvas.h
@@ -210,6 +210,7 @@ struct _glist
     unsigned int gl_loading:1;      /* am now loading from file */
     unsigned int gl_willvis:1;      /* make me visible after loading */ 
     unsigned int gl_edit:1;         /* edit mode */
+    unsigned int gl_edit_save:1;    /* set in temporary run mode */
     unsigned int gl_isdeleting:1;   /* we're inside glist_delete -- hack! */
     unsigned int gl_unloading:1;    /* we're inside canvas_free */
     unsigned int gl_goprect:1;      /* draw rectangle for graph-on-parent */
diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c
index e7334d69b930015c741d09160dd9cf03f1fb9506..0f5ef350945c75816fe598d3ec152667664d8077 100644
--- a/pd/src/g_editor.c
+++ b/pd/src/g_editor.c
@@ -5596,13 +5596,16 @@ void canvas_key(t_canvas *x, t_symbol *s, int ac, t_atom *av)
            from assuming editmode after it has had an object added via 
            a ctrl+(1-5) shortcut while not in edit mode
         */
-        if (x->gl_edit /*&& x->gl_editor->e_onmotion == MA_NONE*/)
+        if (x->gl_edit /*&& x->gl_editor->e_onmotion == MA_NONE*/ ||
+            x->gl_edit_save)
         {
             canvas_setcursor(x, down ?
                 CURSOR_RUNMODE_NOTHING : CURSOR_EDITMODE_NOTHING);
+            x->gl_edit = down ? 0 : 1;
+            x->gl_edit_save = !x->gl_edit;
             gui_vmess("gui_canvas_set_editmode", "xi",
                 x,
-                down ? 0 : 1);
+                x->gl_edit);
             if(x->gl_editor && x->gl_editor->gl_magic_glass)
             {
                 if (down)
@@ -7993,6 +7996,8 @@ void canvas_editmode(t_canvas *x, t_floatarg fyesplease)
         return;
     }
     x->gl_edit = !x->gl_edit;
+    // make sure to exit temporary run mode here
+    x->gl_edit_save = 0;
     if (x->gl_edit && glist_isvisible(x) && glist_istoplevel(x)){
         //dpsaha@vt.edu add the resize blobs on GOP
         t_gobj *g;