diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 5ea63d3..3cc83ca 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -6078,6 +6078,10 @@ update_cursor_at_position (GtkWidget *widget, gint x, gint y)
   GdkCursorType cursor_type;
   GdkCursor *cursor;
   GdkWindowState state;
+  gboolean no_cursor = FALSE;
+
+  if (!window->decorated)
+    return;
 
   region = get_active_region_type (window, x, y);
 
@@ -6088,7 +6092,8 @@ update_cursor_at_position (GtkWidget *widget, gint x, gint y)
 
   if ((state & GDK_WINDOW_STATE_MAXIMIZED) || !window->allow_grow)
     {
-      cursor_type = GDK_ARROW;
+      cursor = NULL;
+      no_cursor = TRUE;
     }
   else
     {
@@ -6127,12 +6132,19 @@ update_cursor_at_position (GtkWidget *widget, gint x, gint y)
           break;
 
         default:
-          cursor_type = GDK_ARROW;
-          break;
+          no_cursor = TRUE;
+        }
+
+      if (no_cursor)
+        {
+          cursor = NULL;
+        }
+      else
+        {
+          cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), cursor_type);
         }
     }
 
-  cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), cursor_type);
   gdk_window_set_cursor (widget->window, cursor);
 }
 
