diff --git a/win/vncviewer/OptionsDialog.cxx b/win/vncviewer/OptionsDialog.cxx
index 08990f7..c326645 100644
--- a/win/vncviewer/OptionsDialog.cxx
+++ b/win/vncviewer/OptionsDialog.cxx
@@ -176,6 +176,14 @@
     } else {
       SetDlgItemInt(handle, IDC_COMBO_SCALE, dlg->options.scale, FALSE);
     }
+    HWND hScaleFilterCombo = GetDlgItem(handle, IDC_COMBO_SCALE_FILTER);
+    SendMessage(hScaleFilterCombo, CB_RESETCONTENT, 0, 0);
+    ScaleFilters scaleFilters;
+    for (i = 0; i <= rfb::scaleFilterMaxNumber; i++) {
+      SendMessage(hScaleFilterCombo, CB_ADDSTRING, (WPARAM)0, (LPARAM)(int FAR*)scaleFilters[i].name);
+    }
+    SendMessage(hScaleFilterCombo, CB_SETCURSEL, (WPARAM)dlg->options.scaleFilter, (LPARAM)0);
+    if (dlg->options.scale == 100 && !dlg->options.autoScaling) enableItem(IDC_COMBO_SCALE_FILTER, 0);
   }
   virtual bool onOk() {
     dlg->options.shared = isItemChecked(IDC_CONN_SHARED);
@@ -197,9 +205,28 @@
         dlg->options.autoScaling = true;
       }
     }
+    dlg->options.scaleFilter = SendMessage(GetDlgItem(handle, IDC_COMBO_SCALE_FILTER), CB_GETCURSEL, 0, 0);
     ((ViewerOptions*)propSheet)->setChanged();
     return true;
   }
+  virtual bool onCommand(int id, int cmd) {
+    if (id == IDC_COMBO_SCALE) {
+      if (cmd == CBN_SELENDOK || cmd == CBN_EDITCHANGE) {
+        char scaleStr[20];
+        if (cmd == CBN_SELENDOK) {
+          HWND handleComboScale = GetDlgItem(handle, IDC_COMBO_SCALE);
+          int index = SendMessage(handleComboScale, CB_GETCURSEL, 0, 0);
+          SendMessage(handleComboScale, CB_GETLBTEXT, (WPARAM)index, (LPARAM)scaleStr);
+        } else {
+          GetDlgItemText(handle, IDC_COMBO_SCALE, scaleStr, 20);
+        }
+        if (strcmp(scaleStr, "100") == 0) enableItem(IDC_COMBO_SCALE_FILTER, 0);
+        else enableItem(IDC_COMBO_SCALE_FILTER, 1);
+        return true;
+      }
+    }
+    return false;
+  }
 protected:
   OptionsInfo* dlg;
 };
diff --git a/win/vncviewer/resource.h b/win/vncviewer/resource.h
index 0016b74..362d56e 100644
--- a/win/vncviewer/resource.h
+++ b/win/vncviewer/resource.h
@@ -123,6 +123,8 @@
 #define IDC_STATIC_SCALE                1097
 #define IDC_COMBO_SCALE                 1098
 #define IDC_STATIC_PERCENT              1099
+#define IDC_COMBO_SCALE_FILTER          1100
+#define IDC_SCALE_FILTER                1101
 #define ID_TOOLBAR                      40002
 #define ID_CLOSE                        40003
 #define ID_OPTIONS                      40004
@@ -155,7 +157,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        134
 #define _APS_NEXT_COMMAND_VALUE         40028
-#define _APS_NEXT_CONTROL_VALUE         1100
+#define _APS_NEXT_CONTROL_VALUE         1102
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
diff --git a/win/vncviewer/vncviewer.rc b/win/vncviewer/vncviewer.rc
index bf8a825..ae479c1 100644
--- a/win/vncviewer/vncviewer.rc
+++ b/win/vncviewer/vncviewer.rc
@@ -210,32 +210,36 @@
     LTEXT           "quality (1=poor, 9=best)",IDC_STATIC,44,140,81,9
 END
 
-IDD_MISC DIALOG DISCARDABLE  0, 0, 213, 137
+IDD_MISC DIALOG DISCARDABLE  0, 0, 216, 138
 STYLE DS_MODALFRAME | DS_CONTROL | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Misc"
 FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "Shared connection (do not disconnect other viewers)",
                     IDC_CONN_SHARED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
-                    10,199,15
+                    10,202,15
     CONTROL         "Full-screen mode",IDC_FULL_SCREEN,"Button",
                     BS_AUTOCHECKBOX | WS_TABSTOP,7,25,99,15
-    CONTROL         "Show toolbar",IDC_SHOW_TOOLBAR,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,106,25,100,15
     CONTROL         "Render cursor locally",IDC_LOCAL_CURSOR,"Button",
                     BS_AUTOCHECKBOX | WS_TABSTOP,7,40,99,15
     CONTROL         "Allow dynamic desktop resizing",IDC_DESKTOP_RESIZE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,55,199,15
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,55,112,15
     CONTROL         "Only use protocol version 3.3",IDC_PROTOCOL_3_3,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,7,70,199,15
+                    BS_AUTOCHECKBOX | WS_TABSTOP,7,70,111,15
     CONTROL         "Beep when requested to by the server",IDC_ACCEPT_BELL,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,199,15
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,202,15
     CONTROL         "Offer to automatically reconnect",IDC_AUTO_RECONNECT,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,100,199,15
-    LTEXT           "Scale by:",IDC_STATIC_SCALE,106,40,34,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_COMBO_SCALE,140,40,40,134,CBS_DROPDOWN | CBS_SORT | 
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,100,202,15
+    CONTROL         "Show toolbar",IDC_SHOW_TOOLBAR,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,106,25,103,15
+    COMBOBOX        IDC_COMBO_SCALE,138,40,42,134,CBS_DROPDOWN | CBS_SORT | 
                     WS_VSCROLL | WS_TABSTOP
-    LTEXT           "%",IDC_STATIC_PERCENT,185,40,21,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_COMBO_SCALE_FILTER,138,70,71,113,CBS_DROPDOWNLIST | 
+                    WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Scale by:",IDC_STATIC_SCALE,106,40,32,15,SS_CENTERIMAGE
+    LTEXT           "%",IDC_STATIC_PERCENT,185,40,24,15,SS_CENTERIMAGE
+    LTEXT           "With filter:",IDC_SCALE_FILTER,138,55,71,15,
+                    SS_CENTERIMAGE
 END
 
 IDD_INPUTS DIALOG DISCARDABLE  0, 0, 186, 162
@@ -502,10 +506,13 @@
     IDD_MISC, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 206
+        RIGHTMARGIN, 209
         VERTGUIDE, 106
+        VERTGUIDE, 138
+        VERTGUIDE, 180
+        VERTGUIDE, 185
         TOPMARGIN, 7
-        BOTTOMMARGIN, 130
+        BOTTOMMARGIN, 131
         HORZGUIDE, 10
         HORZGUIDE, 25
         HORZGUIDE, 40
