diff --git a/Fltk/helpWindow.cpp b/Fltk/helpWindow.cpp
index d509e9a947fb817d5c704de45db5f9312ee6ad13..eadc4fff2e1c17d37e3b1c2f3e6e18e829f0b9f4 100644
--- a/Fltk/helpWindow.cpp
+++ b/Fltk/helpWindow.cpp
@@ -36,24 +36,32 @@ 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 = 4 * BB, height = BH;
+  int width = 4 * BB + 2 * WB, height = 3 * BH + 4 * WB;
   int BB1 = (int)(3. * BB / 4.), BB2 = 2 * BB - BB1;
-  Fl_Window *win = new paletteWindow(width, height, false, "Set Value");
-  win->border(0);
+  Fl_Window *win = new paletteWindow(width, height, false, "Value Chooser");
   win->set_modal();
-  win->position(Fl::event_x_root() - BB, Fl::event_y_root() - BH / 2);
+  win->hotspot(win);
+  Fl_Box *box = new Fl_Box(WB, WB, width - 2 * WB, BH);
+  box->align(FL_ALIGN_INSIDE|FL_ALIGN_LEFT|FL_ALIGN_CLIP);
   Fl_Value_Input *number = 0;
   Fl_Input *string = 0;
+  std::string l = "Enter";
   if(num){
-    number = new Fl_Value_Input(0, 0, width - BB1 - BB2, height);
+    box->copy_label((l + " number for " + category + "." + name).c_str());
+    number = new Fl_Value_Input(WB, 2 * WB + BH, width - 2 * WB, BH);
     number->value(valn);
   }
   else{
-    string = new Fl_Input(0, 0, width - BB1 - BB2, height);
+    box->copy_label((l + " string for " + category + "." + name).c_str());
+    string = new Fl_Input(WB, 2 * WB + BH, width - 2 * WB, BH);
     string->value(vals.c_str());
   }
-  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");
+  Fl_Button *set = new Fl_Return_Button
+    (width - BB1 - BB2 - BB - 3 * WB, 3 * WB + 2 * BH, BB1, BH, "Set");
+  Fl_Button *reset = new Fl_Button
+    (width - BB2 - BB - 2 * WB, 3 * WB + 2 * BH, BB2, BH, "Restore default");
+  Fl_Button *cancel = new Fl_Button
+    (width - BB - WB, 3 * WB + 2 * BH, BB, BH, "Cancel");
   win->end();
   win->show();
   if(number) number->take_focus();
@@ -65,7 +73,7 @@ static void numberOrStringChooser(const std::string &category, int index,
     for (;;) {
       Fl_Widget* o = Fl::readqueue();
       if (!o) break;
-      if (o == win) {
+      if (o == win || o == cancel) {
         done = true;
         break;
       }