diff --git a/unix/common/randr.cxx b/unix/common/randr.cxx
index b0adc3f..8514817 100644
--- a/unix/common/randr.cxx
+++ b/unix/common/randr.cxx
@@ -30,6 +30,26 @@
 #include <RandrGlue.h>
 static rfb::LogWriter vlog("RandR");
 
+static int ResizeScreen(int fb_width, int fb_height)
+{
+  /*
+   * Disable outputs which are larger than the target size
+   */
+  for (int i = 0;i < vncRandRGetOutputCount();i++) {
+    int x, y, width, height;
+    if (vncRandRGetOutputDimensions(i, &x, &y, &width, &height) == 0) {
+      if (x + width > fb_width || y + height > fb_height) {
+        /* Currently ignoring errors */
+        /* FIXME: Save output rotation and restore when configuring output */
+        vncRandRDisableOutput(i);
+      }
+    }
+  }
+
+  return vncRandRResizeScreen(fb_width, fb_height);
+}
+
+
 rfb::ScreenSet computeScreenLayout(OutputIdMap *outputIdMap)
 {
   rfb::ScreenSet layout;
@@ -120,7 +140,7 @@
   /* First we might need to resize the screen */
   if ((fb_width != vncGetScreenWidth()) ||
       (fb_height != vncGetScreenHeight())) {
-    ret = vncRandRResizeScreen(fb_width, fb_height);
+    ret = ResizeScreen(fb_width, fb_height);
     if (!ret) {
       vlog.error("Failed to resize screen to %dx%d", fb_width, fb_height);
       return rfb::resultInvalid;
