diff --git a/Common/Context.h b/Common/Context.h
index 204376376a33ffc7170714cc64cd292c4ca111e6..30fa9449531c78aa9cb843a9f941cbcfde9f2209 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -101,7 +101,7 @@ class CTX {
   // position and size of various windows in the GUI
   int menuPosition[2], glPosition[2], glSize[2], msgSize;
   int optPosition[2], visPosition[2], clipPosition[2], manipPosition[2];
-  int statPosition[2], ctxPosition[2], solverPosition[2];
+  int statPosition[2], ctxPosition[2], solverPosition[2], solverSize[2];
   int pluginPosition[2], pluginSize[2], fieldPosition[2], fieldSize[2];
   int fileChooserPosition[2];
   // use the system menu bar on Mac OS X?
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index 841ce5e6e9be4eaba08a934899bb48f53a5e3444..458985e624bdb251e5696f1fc302ac8f084f6d2f 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -582,9 +582,13 @@ StringXNumber GeneralOptions_Number[] = {
     "Size (in pixels) of small axes" },
   { F|S, "SolverPositionX" , opt_general_solver_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the solver "
-    "windows" },
+    "window" },
   { F|S, "SolverPositionY" , opt_general_solver_position1 , 150. ,
-    "Vertical position (in pixels) of the upper left corner of the solver windows" },
+    "Vertical position (in pixels) of the upper left corner of the solver window" },
+  { F|S, "SolverHeight" , opt_general_solver_size1 , 400. ,
+    "Height (in pixels) of the solver window" },
+  { F|S, "SolverWidth" , opt_general_solver_size0 , 300. ,
+    "Width (in pixels) of the solver window" },
   { F|S, "StatisticsPositionX" , opt_general_statistics_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the statistic "
     "window" },
diff --git a/Common/GmshRemote.cpp b/Common/GmshRemote.cpp
index 6579e62f72c4bbf3f4cc66c39f74f1a8e8e91182..e4f3266e15f68ef4fd7c4e9de441854ad7dac0b7 100644
--- a/Common/GmshRemote.cpp
+++ b/Common/GmshRemote.cpp
@@ -295,6 +295,7 @@ int GmshRemote()
 int GmshRemote()
 {
   Msg::Error("GmshRemote requires Post and OneLab modules");
+  return 0;
 }
 
 #endif
diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp
index 3c43c589ef4bb657cf7ea63b521625320d1dcad4..b5d8afd98fe4d29fbd4986127dd6a17c7d4de412 100644
--- a/Common/OpenFile.cpp
+++ b/Common/OpenFile.cpp
@@ -281,7 +281,7 @@ int MergeFile(std::string fileName, bool warnIfMissing)
 
   CTX::instance()->geom.draw = 0; // don't try to draw the model while reading
 
-#if defined(HAVE_POST)
+#if defined(HAVE_FLTK) && defined(HAVE_POST)
   int numViewsBefore = PView::list.size();
 #endif
 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 0fbf35b5527f359f1eaf142a38f68f108d0bfb28..d9ce3206ede42fc5babc602d8a33804d23e59bba 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1777,6 +1777,20 @@ double opt_general_solver_position1(OPT_ARGS_NUM)
   return CTX::instance()->solverPosition[1];
 }
 
+double opt_general_solver_size0(OPT_ARGS_NUM)
+{
+  if(action & GMSH_SET)
+    CTX::instance()->solverSize[0] = (int)val;
+  return CTX::instance()->solverSize[0];
+}
+
+double opt_general_solver_size1(OPT_ARGS_NUM)
+{
+  if(action & GMSH_SET)
+    CTX::instance()->solverSize[1] = (int)val;
+  return CTX::instance()->solverSize[1];
+}
+
 double opt_general_context_position0(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
diff --git a/Common/Options.h b/Common/Options.h
index 7903d2d60230572cbafeff3e148809008cfffa61..5ba1277f3a4d78f21fd11cb26e31cd857157dfad 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -104,6 +104,8 @@ double opt_general_graphics_size0(OPT_ARGS_NUM);
 double opt_general_graphics_size1(OPT_ARGS_NUM);
 double opt_general_solver_position0(OPT_ARGS_NUM);
 double opt_general_solver_position1(OPT_ARGS_NUM);
+double opt_general_solver_size0(OPT_ARGS_NUM);
+double opt_general_solver_size1(OPT_ARGS_NUM);
 double opt_general_context_position0(OPT_ARGS_NUM);
 double opt_general_context_position1(OPT_ARGS_NUM);
 double opt_general_file_chooser_position0(OPT_ARGS_NUM);
diff --git a/Fltk/FlGui.cpp b/Fltk/FlGui.cpp
index e90d1e803dd7b290bd5954145175fc47f2582c91..6d44efe0beb67cb0cb79086c62be763d27ea19e2 100644
--- a/Fltk/FlGui.cpp
+++ b/Fltk/FlGui.cpp
@@ -840,6 +840,8 @@ void FlGui::storeCurrentWindowsInfo()
 #if defined(HAVE_ONELAB) && (FL_MAJOR_VERSION == 1) && (FL_MINOR_VERSION == 3)
   CTX::instance()->solverPosition[0] = onelab->x();
   CTX::instance()->solverPosition[1] = onelab->y();
+  CTX::instance()->solverSize[0] = onelab->w();
+  CTX::instance()->solverSize[1] = onelab->h();
 #endif
   fileChooserGetPosition(&CTX::instance()->fileChooserPosition[0],
                          &CTX::instance()->fileChooserPosition[1]);
diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index afa6f8ab265e96f8623967a4a4ec27a8378a1b41..945c7d178fa1e96887fe6b46e93273754164895b 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -961,8 +961,8 @@ onelabWindow::onelabWindow(int deltaFontSize)
 {
   FL_NORMAL_SIZE -= _deltaFontSize;
 
-  int width = 29 * FL_NORMAL_SIZE;
-  int height = 15 * BH + 3 * WB;
+  int width = CTX::instance()->solverSize[0];
+  int height = CTX::instance()->solverSize[1];
 
   _win = new paletteWindow
     (width, height, CTX::instance()->nonModalWindows ? true : false, "OneLab");
diff --git a/Fltk/onelabWindow.h b/Fltk/onelabWindow.h
index 4a740a2e8c13063ba5712f7b28e2a63fa3e25b16..8f692761182827363dd88a174ca388e0b935b243 100644
--- a/Fltk/onelabWindow.h
+++ b/Fltk/onelabWindow.h
@@ -36,6 +36,8 @@ class onelabWindow{
   onelabWindow(int deltaFontSize=0);
   int x(){ return _win->x(); }
   int y(){ return _win->y(); }
+  int w(){ return _win->w(); }
+  int h(){ return _win->h(); }
   void rebuildSolverList();
   void rebuildTree();
   void setButtonMode(const std::string &butt0, const std::string &butt1);