diff --git a/src/g_editor.c b/src/g_editor.c
index 3b9d5b2f0e5c9b3e50b2471b3a82de10773bb710..5ee6c014511601037d03aaca1200ac6b9c16ba03 100644
--- a/src/g_editor.c
+++ b/src/g_editor.c
@@ -978,10 +978,10 @@ void canvas_vis(t_canvas *x, t_floatarg f)
 void canvas_setgraph(t_glist *x, int flag, int nogoprect)
 {
     t_editor *editorwas = x->gl_editor;
-    if (editorwas)
-       canvas_create_editor(x, 0);
     if (!flag && glist_isgraph(x))
     {
+        if (editorwas)
+            canvas_create_editor(x, 0);
         if (x->gl_owner && !x->gl_loading && glist_isvisible(x->gl_owner))
             gobj_vis(&x->gl_gobj, x->gl_owner, 0);
         x->gl_isgraph = 0;
@@ -1023,8 +1023,6 @@ void canvas_setgraph(t_glist *x, int flag, int nogoprect)
             canvas_fixlinesfor(x->gl_owner, &x->gl_obj);
         }
     }
-   if (editorwas && !x->gl_editor)
-       canvas_create_editor(x, 0);
 }
 
 void garray_properties(t_garray *x);