diff --git a/win/vncviewer/CConnOptions.cxx b/win/vncviewer/CConnOptions.cxx
index 3af422e..ea0941e 100644
--- a/win/vncviewer/CConnOptions.cxx
+++ b/win/vncviewer/CConnOptions.cxx
@@ -123,10 +123,6 @@
 static IntParameter scale("Scale", 
                           "Scale local copy of the remote desktop, in percent",
                           100);
-static IntParameter scaleFilter("ScaleFilter", 
-                                "Filter used for the remote desktop scaling. "
-                                "0 = Nearest Neighbor, 1 = Bilinear, 2 = Bicubic, 3 = Sinc.",
-                                rfb::defaultScaleFilter);
 
 CConnOptions::CConnOptions()
 : useLocalCursor(::useLocalCursor), useDesktopResize(::useDesktopResize),
@@ -138,7 +134,7 @@
 emulate3(::emulate3), monitor(::monitor.getData()), showToolbar(::showToolbar),
 customCompressLevel(::customCompressLevel), compressLevel(::compressLevel), 
 noJpeg(::noJpeg), qualityLevel(::qualityLevel), passwordFile(::passwordFile.getData()),
-autoReconnect(::autoReconnect), autoScaling(::autoScaling), scale(::scale), scaleFilter(::scaleFilter)
+autoReconnect(::autoReconnect), autoScaling(::autoScaling), scale(::scale)
 {
   if (autoSelect) {
     preferredEncoding = encodingZRLE;
@@ -280,11 +276,6 @@
             autoScaling = atoi(value.buf);
           } else if (stricmp(name.buf, "Scale") == 0) {
             scale = atoi(value.buf);
-          } else if (stricmp(name.buf, "ScaleFilter") == 0) {
-            int scaleFilterID = atoi(value.buf);
-            if (scaleFilterID > rfb::scaleFilterMaxNumber || scaleFilterID < 0 ) {
-              scaleFilter = rfb::defaultScaleFilter;
-            } else scaleFilter = scaleFilterID;
           }
         }
       }
@@ -368,7 +359,6 @@
     fprintf(f, "QualityLevel=%d\n", qualityLevel);
     fprintf(f, "AutoScaling=%d\n", (int)autoScaling);
     fprintf(f, "Scale=%d\n", scale);
-    fprintf(f, "ScaleFilter=%d\n", scaleFilter);
     fclose(f); f=0;
 
     setConfigFileName(filename);
@@ -410,7 +400,6 @@
   key.setInt(_T("QualityLevel"), qualityLevel);
   key.setBool(_T("AutoScaling"), autoScaling);
   key.setInt(_T("Scale"), scale);
-  key.setInt(_T("ScaleFilter"), scaleFilter);
 }
 
 
@@ -474,7 +463,6 @@
   qualityLevel = o.qualityLevel;
   autoScaling = o.autoScaling;
   scale = o.scale;
-  scaleFilter = o.scaleFilter;
 
   return *this;
 }
