diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index e3057f92376c1b6f04c4770713e35761bb8837ca..bce2c93adf1d9981dda324788d6ec5750ebddf53 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -531,12 +531,12 @@ StringXNumber GeneralOptions_Number[] = {
   { F|S, "FltkColorScheme" , opt_general_gui_color_scheme , 0. ,
     "FLTK user interface color theme (0: standard, 1:dark)" },
   { F|O, "FontSize" , opt_general_fontsize , -1. ,
-    "Size of the font in the user interface (-1=automatic)" },
+    "Size of the font in the user interface, in pixels (-1: automatic)" },
 
   { F|O, "GraphicsFontSize" , opt_general_graphics_fontsize , 15. ,
-    "Size of the font in the graphic window" },
+    "Size of the font in the graphic window, in pixels" },
   { F|O, "GraphicsFontSizeTitle" , opt_general_graphics_fontsize_title , 18. ,
-    "Size of the font in the graphic window for titles" },
+    "Size of the font in the graphic window for titles, in pixels" },
   { F|S, "GraphicsHeight" , opt_general_graphics_size1 , 600. ,
     "Height (in pixels) of the graphic window" },
   { F|S, "GraphicsPositionX" , opt_general_graphics_position0 , 50. ,
@@ -655,7 +655,7 @@ StringXNumber GeneralOptions_Number[] = {
   { F|O, "MeshDiscrete" , opt_general_meshdiscrete , 0. ,
     "Mesh discrete surfaces through automatic parametrization (MUMPS required for efficiency) (0)" },
   { F|O, "MessageFontSize" , opt_general_message_fontsize , -1. ,
-    "Size of the font in the message window (-1=automatic)" },
+    "Size of the font in the message window, in pixels (-1: automatic)" },
   { F|S, "MessageHeight" , opt_general_message_size , 300. ,
     "Height (in pixels) of the message console when it is visible (should be > 0)" },
   { F,   "MinX" , opt_general_xmin , 0. ,
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 72a7e0eebcbffac8179620babb8a87a9da7ddfc4..8b0ac7c3c724705226937dcc7c1ed6b84808509a 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -2097,8 +2097,9 @@ double opt_general_initial_context(OPT_ARGS_NUM)
 
 double opt_general_fontsize(OPT_ARGS_NUM)
 {
-  if(action & GMSH_SET)
+  if(action & GMSH_SET){
     CTX::instance()->fontSize = (int)val;
+  }
   return CTX::instance()->fontSize;
 }
 
@@ -2794,7 +2795,7 @@ double opt_general_scale2(OPT_ARGS_NUM)
 double opt_general_clip_factor(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
-    // should NEVER be zero (or negative)
+    // should never be zero (or negative)
     if(val < 0.01)
       CTX::instance()->clipFactor = 0.01;
     else
diff --git a/Fltk/drawContextFltk.h b/Fltk/drawContextFltk.h
index 0d8da3088c0f3193cfd0f282727cf3364e3ba51f..16c733c0ea2d61369536b5572bfb31aa9973a139 100644
--- a/Fltk/drawContextFltk.h
+++ b/Fltk/drawContextFltk.h
@@ -122,10 +122,16 @@ class drawContextFltk : public drawContextGlobal{
       return CTX::instance()->fontSize;
     }
     else{
-      float dpih, dpiv;
-      Fl::screen_dpi(dpih,dpiv);
-      return (int)(dpih/10);
+      int w = Fl::w();
+      if(w <= 1024)      return 11;
+      else if(w <= 1440) return 12;
+      else if(w <= 1680) return 13;
+      else if(w <= 1920) return 14;
+      return (w - 1920) / 160 + 15;
     }
+    //float dpih, dpiv;
+    //Fl::screen_dpi(dpih, dpiv);
+    //return (int)(dpih * CTX::instance()->fontSize / 96.);
   }
   void setFont(int fontid, int fontsize)
   {