diff --git a/vncviewer/CConn.cxx b/vncviewer/CConn.cxx
index e903284..faf85cc 100644
--- a/vncviewer/CConn.cxx
+++ b/vncviewer/CConn.cxx
@@ -48,7 +48,8 @@
   : serverHost(0), serverPort(0), sock(NULL), desktop(NULL),
     currentEncoding(encodingTight), lastServerEncoding((unsigned int)-1),
     formatChange(false), encodingChange(false),
-    firstUpdate(true), pendingUpdate(false)
+    firstUpdate(true), pendingUpdate(false),
+    forceNonincremental(false)
 {
   setShared(::shared);
 
@@ -98,6 +99,14 @@
   delete sock;
 }
 
+void CConn::refreshFramebuffer()
+{
+  // FIXME: We cannot safely trigger an update request directly but must
+  //        wait for the next update to arrive.
+  if (!formatChange)
+    forceNonincremental = true;
+}
+
 // The RFB core is not properly asynchronous, so it calls this callback
 // whenever it needs to block to wait for more data. Since FLTK is
 // monitoring the socket, we just make sure FLTK gets to run.
@@ -442,9 +451,16 @@
     desktop->setServerPF(pf);
     cp.setPF(pf);
     writer()->writeSetPixelFormat(pf);
+
+    forceNonincremental = true;
+
+    formatChange = false;
   }
+
   checkEncodings();
+
   writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height),
-                                          !formatChange);
-  formatChange = false;
+                                          !forceNonincremental);
+ 
+  forceNonincremental = false;
 }
diff --git a/vncviewer/CConn.h b/vncviewer/CConn.h
index 0f5be62..4592887 100644
--- a/vncviewer/CConn.h
+++ b/vncviewer/CConn.h
@@ -32,6 +32,8 @@
   CConn(const char* vncServerName);
   ~CConn();
 
+  void refreshFramebuffer();
+
   // FdInStreamBlockCallback methods
   void blockCallback();
 
@@ -91,6 +93,8 @@
 
   bool firstUpdate;
   bool pendingUpdate;
+
+  bool forceNonincremental;
 };
 
 #endif
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 2ce788f..c8713b8 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -56,7 +56,8 @@
 
 // Menu constants
 
-enum { ID_EXIT, ID_CTRL, ID_ALT, ID_MENUKEY, ID_CTRLALTDEL, ID_DISMISS };
+enum { ID_EXIT, ID_CTRL, ID_ALT, ID_MENUKEY, ID_CTRLALTDEL,
+       ID_REFRESH, ID_DISMISS };
 
 Viewport::Viewport(int w, int h, const rfb::PixelFormat& serverPF, CConn* cc_)
   : Fl_Widget(0, 0, w, h), cc(cc_), frameBuffer(NULL), pixelTrans(NULL),
@@ -520,6 +521,8 @@
   contextMenu->add("Secret shortcut menu key", FL_F + 8, NULL, (void*)ID_MENUKEY, FL_MENU_INVISIBLE); // Broken, see STR2613
   contextMenu->add(_("Send Ctrl-Alt-Del"), 0, NULL, (void*)ID_CTRLALTDEL, FL_MENU_DIVIDER);
 
+  contextMenu->add(_("Refresh screen"), 0, NULL, (void*)ID_REFRESH, FL_MENU_DIVIDER);
+
   contextMenu->add(_("Dismiss menu"), 0, NULL, (void*)ID_DISMISS, 0);
 }
 
@@ -563,6 +566,9 @@
       cc->writer()->keyEvent(XK_Control_L, false);
     }
     break;
+  case ID_REFRESH:
+    cc->refreshFramebuffer();
+    break;
   case ID_DISMISS:
     // Don't need to do anything
     break;
