diff --git a/Fltk/helpWindow.cpp b/Fltk/helpWindow.cpp
index 2eb6f58e80d9ff76446f292c6c6605ba59b3977f..00cb3ece95f671df48e870d99bf56ce72089378b 100644
--- a/Fltk/helpWindow.cpp
+++ b/Fltk/helpWindow.cpp
@@ -36,24 +36,25 @@ static void numberOrStringChooser(const std::string &category, int index,
     NumberOption(GMSH_GET, category.c_str(), index, name.c_str(), valn);
   else
     StringOption(GMSH_GET, category.c_str(), index, name.c_str(), vals);
-  int width = 3 * BB, height = BH;
+  int width = 4 * BB, height = BH;
+  int BB1 = (int)(3. * BB / 4.), BB2 = 2 * BB - BB1;
   Fl_Double_Window *win = new Fl_Double_Window(width, height, "Set Value");
   win->border(0);
   win->set_modal();
-  win->hotspot(win);
+  //win->hotspot(win);
+  win->position(Fl::event_x_root() - BB, Fl::event_y_root() - BH / 2);
   Fl_Value_Input *number = 0;
   Fl_Input *string = 0;
   if(num){
-    number = new Fl_Value_Input(0, 0, width - BB, height);
-    number->when(FL_WHEN_ENTER_KEY_ALWAYS);
+    number = new Fl_Value_Input(0, 0, width - BB1 - BB2, height);
     number->value(valn);
   }
   else{
-    string = new Fl_Input(0, 0, width - BB, height);
-    string->when(FL_WHEN_ENTER_KEY_ALWAYS);
+    string = new Fl_Input(0, 0, width - BB1 - BB2, height);
     string->value(vals.c_str());
   }
-  Fl_Button *reset = new Fl_Button(width - BB, 0, BB, height, "Use default");
+  Fl_Button *set = new Fl_Return_Button(width - BB1 - BB2, 0, BB1, height, "Set");
+  Fl_Button *reset = new Fl_Button(width - BB2, 0, BB2, height, "Restore default");
   win->end();
   win->show();
   if(number) number->take_focus();
@@ -68,16 +69,17 @@ static void numberOrStringChooser(const std::string &category, int index,
       if (o == win) {
         done = true;
       }
-      if(o == number){
-        valn = number->value();
-        NumberOption(GMSH_SET|GMSH_GUI, category.c_str(), index,
-                     name.c_str(), valn);
-        done = true;
-      }
-      if(o == string){
-        vals = string->value();
-        StringOption(GMSH_SET|GMSH_GUI, category.c_str(), index,
-                     name.c_str(), vals);
+      if(o == set){
+        if(num){
+          valn = number->value();
+          NumberOption(GMSH_SET|GMSH_GUI, category.c_str(), index,
+                       name.c_str(), valn);
+        }
+        else{
+          vals = string->value();
+          StringOption(GMSH_SET|GMSH_GUI, category.c_str(), index,
+                       name.c_str(), vals);
+        }
         done = true;
       }
       if(o == reset){