diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index ef5ec00..04addba 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -106,14 +106,6 @@
     }
   }
 
-  // If we are creating a window which is equal to the size on the
-  // screen on X11, many WMs will treat this as a legacy fullscreen
-  // request. This is not what we want. Besides, it doesn't really
-  // make sense to try to create a window which is larger than the
-  // available work space. 
-  w = __rfbmin(w, Fl::w());
-  h = __rfbmin(h, Fl::h());
-  
   if (force_position()) {
     resize(geom_x, geom_y, w, h);
   } else {
@@ -275,6 +267,34 @@
 {
   bool resizing;
 
+#if ! (defined(WIN32) || defined(__APPLE__))
+  // X11 window managers will treat a resize to cover the entire
+  // monitor as a request to go full screen. Make sure we avoid this.
+  //
+  // FIXME: If this is an external event then this code will get
+  //        FLTK into a confused state about the window's position/size.
+  //        Unfortunately FLTK doesn't offer an easy way to tell
+  //        what kind of resize it is. Let's hope this corner case
+  //        isn't too common...
+#ifdef HAVE_FLTK_FULLSCREEN
+  if (!fullscreen_active())
+#endif
+  {
+    for (int i = 0;i < Fl::screen_count();i++) {
+      int sx, sy, sw, sh;
+
+      Fl::screen_xywh(sx, sy, sw, sh, i);
+
+      if ((sx == x) && (sy == y) && (sw == w) && (sh == h)) {
+        vlog.info("Adjusting window size to avoid accidental full screen request");
+        // Assume a panel of some form and adjust the height
+        y += 20;
+        h -= 40;
+      }
+    }
+  }
+#endif
+
   if ((this->w() != w) || (this->h() != h))
     resizing = true;
   else
