diff --git a/src/gui_w32.c b/src/gui_w32.c
index 85adec6..eb4c841 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1588,7 +1588,7 @@
  * Get the character size of a font.
  */
     static void
-GetFontSize(GuiFont font)
+GetFontSize(GuiFont font, int *char_width, int *char_height)
 {
     HWND    hwnd = GetDesktopWindow();
     HDC	    hdc = GetWindowDC(hwnd);
@@ -1599,8 +1599,10 @@
     GetTextMetrics(hdc, &tm);
     GetAverageFontSize(hdc, &size);
 
-    gui.char_width = size.cx + tm.tmOverhang;
-    gui.char_height = tm.tmHeight + p_linespace;
+    if (char_width)
+	*char_width = size.cx + tm.tmOverhang;
+    if (char_height)
+	*char_height = tm.tmHeight + p_linespace;
 
     SelectFont(hdc, hfntOld);
 
@@ -1608,12 +1610,21 @@
 }
 
 /*
+ * Update the character size in "gui" structure with the specified font.
+ */
+    static void
+UpdateFontSize(GuiFont font)
+{
+    GetFontSize(font, &gui.char_width, &gui.char_height);
+}
+
+/*
  * Adjust gui.char_height (after 'linespace' was changed).
  */
     int
 gui_mch_adjust_charheight(void)
 {
-    GetFontSize(gui.norm_font);
+    UpdateFontSize(gui.norm_font);
     return OK;
 }
 
@@ -3517,7 +3528,7 @@
     gui_mch_free_font(gui.norm_font);
     gui.norm_font = font;
     current_font_height = lfOrig.lfHeight;
-    GetFontSize(font);
+    UpdateFontSize(font);
 
     p = logfont2name(lfOrig);
     if (p != NULL)
@@ -4742,16 +4753,33 @@
     static BOOL
 _OnGetDpiScaledSize(HWND hwnd, UINT dpi, SIZE *size)
 {
+    int		old_width, old_height;
+    int		new_width, new_height;
+    LOGFONTW	lf;
+    HFONT	font;
+
     //TRACE("DPI: %d, SIZE=(%d,%d), s_dpi: %d", dpi, size->cx, size->cy, s_dpi);
 
     // Calculate new approximate size.
-    // FIXME: If a bitmap font (e.g. FixedSys) is used, the font size may not
-    // be changed.  In that case, the calculated size can be wrong.
-    size->cx = size->cx * dpi / s_dpi;
-    size->cy = size->cy * dpi / s_dpi;
+    GetFontSize(gui.norm_font, &old_width, &old_height);    // Current size
+    GetObjectW((HFONT)gui.norm_font, sizeof(lf), &lf);
+    lf.lfHeight = lf.lfHeight * (int)dpi / s_dpi;
+    font = CreateFontIndirectW(&lf);
+    if (font)
+    {
+	GetFontSize((GuiFont)font, &new_width, &new_height);	// New size
+	DeleteFont(font);
+    }
+    else
+    {
+	new_width = old_width;
+	new_height = old_height;
+    }
+    size->cx = size->cx * new_width / old_width;
+    size->cy = size->cy * new_height / old_height;
     //TRACE("New approx. SIZE=(%d,%d)", size->cx, size->cy);
 
-    return FALSE;
+    return TRUE;
 }
 
     static LRESULT
diff --git a/src/version.c b/src/version.c
index c93b3e5..f60f582 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1987,
+/**/
     1986,
 /**/
     1985,
