diff --git a/pd/src/g_traversal.c b/pd/src/g_traversal.c
index d9e7996fec9343ad4e44b35911b88ffb8b867453..98a21791e6b641015d3a5baecce1a53900d0a438 100644
--- a/pd/src/g_traversal.c
+++ b/pd/src/g_traversal.c
@@ -1322,7 +1322,7 @@ static void *field_new(t_symbol *s)
 {
     t_field *x = (t_field *)pd_new(field_class);
     x->x_s = s;
-    x->x_canvas = canvas_getcurrent();
+    x->x_canvas = canvas_getrootfor(canvas_getcurrent());
     x->x_template = NULL;
     outlet_new(&x->x_obj, &s_list);
     return (x);