diff --git a/jpeg/.cvsignore b/jpeg/.cvsignore
index 4408dc4..b43e5f8 100644
--- a/jpeg/.cvsignore
+++ b/jpeg/.cvsignore
@@ -6,3 +6,4 @@
 jpeg.plg
 config.log
 config.status
+jconfig.h
diff --git a/rfb/CMsgWriter.cxx b/rfb/CMsgWriter.cxx
index d429d7a..1693cbf 100644
--- a/rfb/CMsgWriter.cxx
+++ b/rfb/CMsgWriter.cxx
@@ -76,8 +76,9 @@
     }
   }
   encodings[nEncodings++] = pseudoEncodingLastRect;
-  // FIXME
-  encodings[nEncodings++] = pseudoEncodingQualityLevel9;
+  if (cp->qualityLevel >= 0 && cp->qualityLevel <= 9)
+      encodings[nEncodings++] = pseudoEncodingQualityLevel0 + cp->qualityLevel;
+
   writeSetEncodings(nEncodings, encodings);
 }
   
diff --git a/vncviewer/CViewOptions.cxx b/vncviewer/CViewOptions.cxx
index 089c4c4..1740c19 100644
--- a/vncviewer/CViewOptions.cxx
+++ b/vncviewer/CViewOptions.cxx
@@ -83,6 +83,10 @@
 static StringParameter monitor("Monitor", "The monitor to open the VNC Viewer window on, if available.", "");
 static StringParameter menuKey("MenuKey", "The key which brings up the popup menu", "F8");
 
+static IntParameter qualityLevel("QualityLevel",
+				 "JPEG quality level. "
+				 "0 = Low, 9 = High",
+				 5);
 
 CViewOptions::CViewOptions()
 : useLocalCursor(::useLocalCursor), useDesktopResize(::useDesktopResize),
@@ -90,7 +94,8 @@
 shared(::sharedConnection), sendPtrEvents(::sendPtrEvents), sendKeyEvents(::sendKeyEvents),
 preferredEncoding(encodingZRLE), clientCutText(::clientCutText), serverCutText(::serverCutText),
 protocol3_3(::protocol3_3), acceptBell(::acceptBell), lowColourLevel(::lowColourLevel),
-pointerEventInterval(ptrEventInterval), emulate3(::emulate3), monitor(::monitor.getData())
+pointerEventInterval(ptrEventInterval), emulate3(::emulate3), monitor(::monitor.getData()),
+qualityLevel(::qualityLevel)
 {
   CharArray encodingName(::preferredEncoding.getData());
   preferredEncoding = encodingNum(encodingName.buf);
@@ -190,6 +195,8 @@
             monitor.replaceBuf(value.takeBuf());
           } else if (stricmp(name.buf, "MenuKey") == 0) {
             setMenuKey(value.buf);
+          } else if (stricmp(name.buf, "QualityLevel") == 0) {
+	    qualityLevel = atoi(value.buf);
 
             // Legacy options
           } else if (stricmp(name.buf, "Preferred_Encoding") == 0) {
@@ -274,6 +281,7 @@
     if (monitor.buf)
       fprintf(f, "Monitor=%s\n", monitor.buf);
     fprintf(f, "MenuKey=%s\n", CharArray(menuKeyName()).buf);
+    fprintf(f, "QualityLevel=%d\n", qualityLevel);
     fclose(f); f=0;
 
     setConfigFileName(filename);
@@ -306,6 +314,7 @@
   if (monitor.buf)
     key.setString(_T("Monitor"), TStr(monitor.buf));
   key.setString(_T("MenuKey"), TCharArray(menuKeyName()).buf);
+  key.setInt(_T("QualityLevel"), qualityLevel);
 }
 
 
@@ -360,5 +369,6 @@
   setHost(o.host.buf);
   setMonitor(o.monitor.buf);
   menuKey = o.menuKey;
+  qualityLevel = o.qualityLevel;
   return *this;
-}
\ No newline at end of file
+}
diff --git a/vncviewer/CViewOptions.h b/vncviewer/CViewOptions.h
index 9120bde..31e4ead 100644
--- a/vncviewer/CViewOptions.h
+++ b/vncviewer/CViewOptions.h
@@ -77,6 +77,7 @@
       unsigned int menuKey;
       void setMenuKey(const char* keyName);
       char* menuKeyName();
+      int qualityLevel;
     };
 
 
diff --git a/vncviewer_unix/CConn.cxx b/vncviewer_unix/CConn.cxx
index 0b6431b..7229cc3 100644
--- a/vncviewer_unix/CConn.cxx
+++ b/vncviewer_unix/CConn.cxx
@@ -74,6 +74,7 @@
   }
   cp.supportsDesktopResize = true;
   cp.supportsLocalCursor = useLocalCursor;
+  cp.qualityLevel = qualityLevel;
   initMenu();
 
   if (sock) {
diff --git a/vncviewer_unix/parameters.h b/vncviewer_unix/parameters.h
index 815f5f1..41eb529 100644
--- a/vncviewer_unix/parameters.h
+++ b/vncviewer_unix/parameters.h
@@ -37,6 +37,7 @@
 extern rfb::BoolParameter sendPrimary;
 extern rfb::BoolParameter fullScreen;
 extern rfb::StringParameter geometry;
+extern rfb::IntParameter qualityLevel;
 
 extern char aboutText[];
 extern char* programName;
diff --git a/vncviewer_unix/vncviewer.cxx b/vncviewer_unix/vncviewer.cxx
index 7b9e37d..431aee4 100644
--- a/vncviewer_unix/vncviewer.cxx
+++ b/vncviewer_unix/vncviewer.cxx
@@ -93,6 +93,11 @@
 StringParameter geometry("geometry", "X geometry specification", "");
 StringParameter displayname("display", "The X display", "");
 
+IntParameter qualityLevel("QualityLevel",
+			  "JPEG quality level. "
+			  "0 = Low, 9 = High",
+			  5);
+
 char aboutText[256];
 char* programName;
 extern char buildtime[];
