diff --git a/Common/Context.h b/Common/Context.h
index ec302470af1cbc4a4f3abc06e489b510199f34d0..16385a1ecb794b3db05bf203e50f20e7c0dbda0d 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -95,10 +95,10 @@ public :
   float quaternion[4];        // the actual quaternion used for "trackball" rotating 
   int useTrackball;           // do or do not use the trackball for rotations 
   double rotation_center[3];  // point around which to rotate the scene
-  int rotation_center_cg;     // rotate around the center of gravity instead of rotation_center[]
+  int rotation_center_cg;     // rotate around the center of mass instead of rotation_center[]
   double min[3];              // x, y and z min for the current geometry 
   double max[3];              // x, y and z max for the current geometry 
-  double cg[3];               // "center of gravity" of the current geometry
+  double cg[3];               // "center of mass" of the current geometry
   double range[3];            // maximum range in the three directions 
   double lc, lc_middle;       // characteristic lengths for the whole problem, 
   double lc_order;            // and never used in mesh generation (->only for geo/post) 
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index a7c9c4c67ea12a7d144ecc259e7054cda2f09fb3..3e5531fb2d6514e88cdf8c3c47c37e7c1b14ebb2 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -555,7 +555,7 @@ StringXNumber GeneralOptions_Number[] = {
   { F,   "RotationZ" , opt_general_rotation2 , 0.0 , 
     "Third Euler angle (used if Trackball=0)" }, 
   { F|O, "RotationCenterGravity" , opt_general_rotation_center_cg , 1. ,
-    "Rotate around the center of gravity instead of (RotationCenterX, RotationCenterY, RotationCenterZ)" },
+    "Rotate around the (pseudo) center of mass instead of (RotationCenterX, RotationCenterY, RotationCenterZ)" },
   { F,   "RotationCenterX" , opt_general_rotation_center0 , 0.0 , 
     "X coordinate of the center of rotation" }, 
   { F,   "RotationCenterY" , opt_general_rotation_center1 , 0.0 , 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index db2b0460eca2afbeef89e162532a8b55efe51219..f605cb619f9ab81a4b3c93a58619dd77618bf47c 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.175 2004-07-23 04:47:41 geuzaine Exp $
+// $Id: Options.cpp,v 1.176 2004-07-30 12:22:01 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -4525,10 +4525,12 @@ double opt_view_grid(OPT_ARGS_NUM)
   GET_VIEW(0.);
   if(action & GMSH_SET) {
     v->Grid = (int)val;
+    if(v->Grid < 0 || v->Grid > 3)
+      v->Grid = 0;
   }
 #if defined(HAVE_FLTK)
   if(_gui_action_valid(action, num)) {
-    WID->view_value[26]->value(v->Grid);
+    WID->view_choice[8]->value(v->Grid);
   }
 #endif
   return v->Grid;
@@ -4567,11 +4569,13 @@ double opt_view_boundary(OPT_ARGS_NUM)
   GET_VIEW(0.);
   if(action & GMSH_SET) {
     v->Boundary = (int)val;
+    if(v->Boundary < 0 || v->Boundary > 3)
+      v->Boundary = 0;
     v->Changed = 1;
   }
 #if defined(HAVE_FLTK)
   if(_gui_action_valid(action, num)) {
-    WID->view_value[11]->value(v->Boundary);
+    WID->view_choice[9]->value(v->Boundary);
   }
 #endif
   return v->Boundary;
@@ -4842,10 +4846,6 @@ double opt_view_transparent_scale(OPT_ARGS_NUM)
   if(action & GMSH_SET) {
     v->TransparentScale = (int)val;
   }
-#if defined(HAVE_FLTK)
-  if(_gui_action_valid(action, num))
-    WID->view_butt[6]->value(v->TransparentScale);
-#endif
   return v->TransparentScale;
 }
 
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index ef7aa0ad88aa3d9f5e16b52dcf8f2d271e5b1733..1e10d104c83c7cde54e62f8836f28d4b52e8f7c0 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.259 2004-07-23 04:47:41 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.260 2004-07-30 12:22:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -3488,6 +3488,14 @@ void view_options_ok_cb(CALLBACK_ARGS)
         opt_view_range_type(i, GMSH_SET, val);
       }
 
+      if(force || WID->view_choice[8]->changed()) {
+        opt_view_grid(i, GMSH_SET, WID->view_choice[8]->value());
+      }
+
+      if(force || WID->view_choice[9]->changed()) {
+        opt_view_boundary(i, GMSH_SET, WID->view_choice[9]->value());
+      }
+
       // view_butts
 
       if(force || WID->view_butt[1]->changed() ||
@@ -3515,9 +3523,6 @@ void view_options_ok_cb(CALLBACK_ARGS)
       if(force || WID->view_butt[5]->changed())
         opt_view_draw_strings(i, GMSH_SET, WID->view_butt[5]->value());
 
-      if(force || WID->view_butt[6]->changed())
-        opt_view_transparent_scale(i, GMSH_SET, WID->view_butt[6]->value());
-
       if(force || WID->view_butt[11]->changed())
         opt_view_light(i, GMSH_SET, WID->view_butt[11]->value());
 
@@ -3604,9 +3609,6 @@ void view_options_ok_cb(CALLBACK_ARGS)
       if(force || WID->view_value[62]->changed())
         opt_view_line_width(i, GMSH_SET, WID->view_value[62]->value());
 
-      if(force || WID->view_value[11]->changed())
-        opt_view_boundary(i, GMSH_SET, WID->view_value[11]->value());
-
       if(force || WID->view_value[12]->changed())
         opt_view_explode(i, GMSH_SET, WID->view_value[12]->value());
 
@@ -3629,9 +3631,6 @@ void view_options_ok_cb(CALLBACK_ARGS)
       if(force || WID->view_value[25]->changed())
         opt_view_nb_abscissa(i, GMSH_SET, WID->view_value[25]->value());
 
-      if(force || WID->view_value[26]->changed())
-        opt_view_grid(i, GMSH_SET, WID->view_value[26]->value());
-
       // view_inputs
 
       if(force || WID->view_input[0]->changed())
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index f795535accf95e2ec8de09272230b8d6a86a2ead..2efa890a13ebc284ba1b2cdf5d9c1bcac40edc61 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.328 2004-07-23 04:47:41 geuzaine Exp $
+// $Id: GUI.cpp,v 1.329 2004-07-30 12:22:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -711,7 +711,7 @@ GUI::GUI(int argc, char **argv)
 
   // store fontsize now: we don't want any subsequent change
   // (e.g. when doing a 'restore options') to be taken into account
-  // the dynamic GUI features (set_context, plugin, etc.)
+  // in the dynamic GUI features (set_context, plugin, etc.)
   fontsize = CTX.fontsize;
 
   // set default font size
@@ -1412,7 +1412,6 @@ void GUI::check_rotation_center_button()
 
 void GUI::create_option_window()
 {
-  int i;
   int width = 41 * fontsize;
   int height = 12 * BH + 5 * WB;
   int BROWSERW = 105 + WB;
@@ -1458,7 +1457,7 @@ void GUI::create_option_window()
   {
     Fl_Tabs *o = new Fl_Tabs(WB, WB, width - 2 * WB, height - 2 * WB);
     {
-      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Display");
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "General");
 
       gen_butt[13] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Show tooltips");
       gen_butt[13]->type(FL_TOGGLE_BUTTON);
@@ -1467,22 +1466,44 @@ void GUI::create_option_window()
 
       gen_butt[0] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW, BH, "Show moving axes");
       gen_butt[0]->tooltip("(Alt+Shift+a)");
+      gen_butt[0]->type(FL_TOGGLE_BUTTON);
+      gen_butt[0]->down_box(TOGGLE_BOX);
+      gen_butt[0]->selection_color(TOGGLE_COLOR);
+
       gen_butt[1] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW, BH, "Show small axes");
       gen_butt[1]->tooltip("(Alt+a)");
+      gen_butt[1]->type(FL_TOGGLE_BUTTON);
+      gen_butt[1]->down_box(TOGGLE_BOX);
+      gen_butt[1]->selection_color(TOGGLE_COLOR);
+	
       gen_butt[6] = new Fl_Check_Button(2 * WB, 2 * WB + 4 * BH, BW, BH, "Show bounding boxes");
       gen_butt[6]->tooltip("(Alt+b)");
+      gen_butt[6]->type(FL_TOGGLE_BUTTON);
+      gen_butt[6]->down_box(TOGGLE_BOX);
+      gen_butt[6]->selection_color(TOGGLE_COLOR);
+
       gen_butt[2] = new Fl_Check_Button(2 * WB, 2 * WB + 5 * BH, BW, BH, "Draw simplified model while rotating, panning and zooming");
       gen_butt[2]->tooltip("(Alt+f)");
+      gen_butt[2]->type(FL_TOGGLE_BUTTON);
+      gen_butt[2]->down_box(TOGGLE_BOX);
+      gen_butt[2]->selection_color(TOGGLE_COLOR);
+
       gen_butt[3] = new Fl_Check_Button(2 * WB, 2 * WB + 6 * BH, BW, BH, "Enable double buffering");
+      gen_butt[3]->type(FL_TOGGLE_BUTTON);
+      gen_butt[3]->down_box(TOGGLE_BOX);
+      gen_butt[3]->selection_color(TOGGLE_COLOR);
+
       gen_butt[4] = new Fl_Check_Button(2 * WB, 2 * WB + 7 * BH, BW, BH, "Use fake transparency mode");
+      gen_butt[4]->type(FL_TOGGLE_BUTTON);
+      gen_butt[4]->down_box(TOGGLE_BOX);
+      gen_butt[4]->selection_color(TOGGLE_COLOR);
+
       gen_butt[5] = new Fl_Check_Button(2 * WB, 2 * WB + 8 * BH, BW, BH, "Use trackball rotation mode instead of Euler angles");
-      for(i = 0; i <= 6; i++) {
-        gen_butt[i]->type(FL_TOGGLE_BUTTON);
-        gen_butt[i]->down_box(TOGGLE_BOX);
-        gen_butt[i]->selection_color(TOGGLE_COLOR);
-      }
+      gen_butt[5]->type(FL_TOGGLE_BUTTON);
+      gen_butt[5]->down_box(TOGGLE_BOX);
+      gen_butt[5]->selection_color(TOGGLE_COLOR);
 
-      gen_butt[15] = new Fl_Check_Button(2 * WB, 2 * WB + 9 * BH, BW, BH, "Rotate around pseudo center of gravity");
+      gen_butt[15] = new Fl_Check_Button(2 * WB, 2 * WB + 9 * BH, BW, BH, "Rotate around pseudo center of mass");
       gen_butt[15]->type(FL_TOGGLE_BUTTON);
       gen_butt[15]->down_box(TOGGLE_BOX);
       gen_butt[15]->selection_color(TOGGLE_COLOR);
@@ -1501,13 +1522,19 @@ void GUI::create_option_window()
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Output");
       gen_butt[7] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Print messages on terminal");
+      gen_butt[7]->type(FL_TOGGLE_BUTTON);
+      gen_butt[7]->down_box(TOGGLE_BOX);
+      gen_butt[7]->selection_color(TOGGLE_COLOR);
+
       gen_butt[8] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW, BH, "Save session information on exit");
+      gen_butt[8]->type(FL_TOGGLE_BUTTON);
+      gen_butt[8]->down_box(TOGGLE_BOX);
+      gen_butt[8]->selection_color(TOGGLE_COLOR);
+
       gen_butt[9] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW/2-WB, BH, "Save options on exit");
-      for(i = 7; i < 10; i++) {
-        gen_butt[i]->type(FL_TOGGLE_BUTTON);
-        gen_butt[i]->down_box(TOGGLE_BOX);
-        gen_butt[i]->selection_color(TOGGLE_COLOR);
-      }
+      gen_butt[9]->type(FL_TOGGLE_BUTTON);
+      gen_butt[9]->down_box(TOGGLE_BOX);
+      gen_butt[9]->selection_color(TOGGLE_COLOR);
 
       Fl_Button *b0 = new Fl_Button(width / 2, 2 * WB + 3 * BH, 2 * BB, BH, "Restore default options");
       b0->callback(options_restore_defaults_cb);
@@ -1522,6 +1549,7 @@ void GUI::create_option_window()
       gen_value[5]->maximum(10);
       gen_value[5]->step(1);
       gen_value[5]->align(FL_ALIGN_RIGHT);
+
       gen_input[0] = new Fl_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Default file name");
       gen_input[0]->align(FL_ALIGN_RIGHT);
 
@@ -1529,11 +1557,13 @@ void GUI::create_option_window()
     }
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Helpers");
+
       gen_input[1] = new Fl_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Text editor command");
+      gen_input[1]->align(FL_ALIGN_RIGHT);
+
       gen_input[2] = new Fl_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Web browser command");
-      for(i = 1; i <= 2; i++) {
-        gen_input[i]->align(FL_ALIGN_RIGHT);
-      }
+      gen_input[2]->align(FL_ALIGN_RIGHT);
+
       o->end();
     }
     {
@@ -1550,43 +1580,23 @@ void GUI::create_option_window()
       gen_choice[2]->align(FL_ALIGN_RIGHT);
       gen_choice[2]->tooltip("(Alt+o)");
 
-      gen_value[2] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW/3, BH);
-      gen_value[2]->minimum(-1);
-      gen_value[2]->maximum(1);
-      gen_value[2]->step(0.01);
-      gen_value[3] = new Fl_Value_Input(2 * WB + IW / 3, 2 * WB + 2 * BH, IW/3, BH);
-      gen_value[3]->minimum(-1);
-      gen_value[3]->maximum(1);
-      gen_value[3]->step(0.01);
-      gen_value[4] = new Fl_Value_Input(2 * WB + 2 * IW / 3, 2 * WB + 2 * BH, IW/3, BH, "Light position");
-      gen_value[4]->minimum(-1);
-      gen_value[4]->maximum(1);
-      gen_value[4]->step(0.01);
-      gen_value[4]->align(FL_ALIGN_RIGHT);
-
-      gen_value[1] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Material shininess");
-      gen_value[1]->minimum(0);
-      gen_value[1]->maximum(10);
-      gen_value[1]->step(0.1);
-      gen_value[1]->align(FL_ALIGN_RIGHT);
-
-      gen_value[11] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Quadric subdivisions");
+      gen_value[11] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Number of quadric subdivisions");
       gen_value[11]->minimum(3);
       gen_value[11]->maximum(30);
       gen_value[11]->step(1);
       gen_value[11]->align(FL_ALIGN_RIGHT);
 
-      gen_value[6] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Point size");
+      gen_value[6] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Point size");
       gen_value[6]->minimum(0.1);
       gen_value[6]->maximum(50);
       gen_value[6]->step(0.1);
-      gen_value[7] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Line width");
+      gen_value[6]->align(FL_ALIGN_RIGHT);
+
+      gen_value[7] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line width");
       gen_value[7]->minimum(0.1);
       gen_value[7]->maximum(50);
       gen_value[7]->step(0.1);
-      for(i = 6; i <= 7; i++) {
-        gen_value[i]->align(FL_ALIGN_RIGHT);
-      }
+      gen_value[7]->align(FL_ALIGN_RIGHT);
 
       static Fl_Menu_Item menu_genvectype[] = {
 	{"Line", 0, 0, 0},
@@ -1595,18 +1605,18 @@ void GUI::create_option_window()
 	{"3D arrow", 0, 0, 0},
 	{0}
       };
-      gen_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 7 * BH, IW, BH, "Vector display");
+      gen_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 5 * BH, IW, BH, "Vector display");
       gen_choice[0]->menu(menu_genvectype);
       gen_choice[0]->align(FL_ALIGN_RIGHT);
 
-      Fl_Button *b = new Fl_Button(2 * IW - 2 * WB, 2 * WB + 7 * BH, (int)(1.5*BB), BH, "Edit arrow shape");
+      Fl_Button *b = new Fl_Button(2 * IW - 2 * WB, 2 * WB + 5 * BH, (int)(1.5*BB), BH, "Edit arrow shape");
       b->callback(general_arrow_param_cb);
 
-      gen_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 8 * BH, IW, BH, "Font");
+      gen_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 6 * BH, IW, BH, "Font");
       gen_choice[1]->menu(menu_font_names);
       gen_choice[1]->align(FL_ALIGN_RIGHT);
 
-      gen_value[12] = new Fl_Value_Input(2 * WB, 2 * WB + 9 * BH, IW, BH, "Font size");
+      gen_value[12] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Font size");
       gen_value[12]->minimum(5);
       gen_value[12]->maximum(40);
       gen_value[12]->step(1);
@@ -1615,7 +1625,35 @@ void GUI::create_option_window()
       o->end();
     }
     {
-      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Colors");
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Light");
+      o->hide();
+
+      gen_value[2] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW/3, BH);
+      gen_value[2]->minimum(-1);
+      gen_value[2]->maximum(1);
+      gen_value[2]->step(0.01);
+
+      gen_value[3] = new Fl_Value_Input(2 * WB + IW / 3, 2 * WB + 1 * BH, IW/3, BH);
+      gen_value[3]->minimum(-1);
+      gen_value[3]->maximum(1);
+      gen_value[3]->step(0.01);
+
+      gen_value[4] = new Fl_Value_Input(2 * WB + 2 * IW / 3, 2 * WB + 1 * BH, IW/3, BH, "Light position");
+      gen_value[4]->minimum(-1);
+      gen_value[4]->maximum(1);
+      gen_value[4]->step(0.01);
+      gen_value[4]->align(FL_ALIGN_RIGHT);
+
+      gen_value[1] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Material shininess");
+      gen_value[1]->minimum(0);
+      gen_value[1]->maximum(10);
+      gen_value[1]->step(0.1);
+      gen_value[1]->align(FL_ALIGN_RIGHT);
+
+      o->end();
+    }
+    {
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Color");
       o->hide();
 
       static Fl_Menu_Item menu_color_scheme[] = {
@@ -1632,13 +1670,14 @@ void GUI::create_option_window()
       gen_choice[3]->tooltip("(Alt+c)");
 
       Fl_Scroll *s = new Fl_Scroll(2 * WB, 3 * WB + 2 * BH, IW + 20, height - 5 * WB - 2 * BH);
-      i = 0;
+      int i = 0;
       while(GeneralOptions_Color[i].str) {
         gen_col[i] = new Fl_Button(2 * WB, 3 * WB + (2 + i) * BH, IW, BH, GeneralOptions_Color[i].str);
         gen_col[i]->callback(color_cb, (void *)GeneralOptions_Color[i].function);
         i++;
       }
       s->end();
+
       o->end();
     }
     o->end();
@@ -1654,97 +1693,137 @@ void GUI::create_option_window()
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "General");
       o->hide();
-      geo_butt[8] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Auto coherence (suppress duplicate entities)");
+      geo_butt[8] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Remove duplicate entities automatically");
       geo_butt[8]->type(FL_TOGGLE_BUTTON);
       geo_butt[8]->down_box(TOGGLE_BOX);
       geo_butt[8]->selection_color(TOGGLE_COLOR);
+
       o->end();
     }
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Visibility");
+
       geo_butt[0] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Points");
       geo_butt[0]->tooltip("(Alt+p)");
+      geo_butt[0]->type(FL_TOGGLE_BUTTON);
+      geo_butt[0]->down_box(TOGGLE_BOX);
+      geo_butt[0]->selection_color(TOGGLE_COLOR);
+
       geo_butt[1] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Lines");
       geo_butt[1]->tooltip("(Alt+l)");
+      geo_butt[1]->type(FL_TOGGLE_BUTTON);
+      geo_butt[1]->down_box(TOGGLE_BOX);
+      geo_butt[1]->selection_color(TOGGLE_COLOR);
+
       geo_butt[2] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Surfaces");
       geo_butt[2]->tooltip("(Alt+s)");
+      geo_butt[2]->type(FL_TOGGLE_BUTTON);
+      geo_butt[2]->down_box(TOGGLE_BOX);
+      geo_butt[2]->selection_color(TOGGLE_COLOR);
+
       geo_butt[3] = new Fl_Check_Button(2 * WB, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Volumes");
       geo_butt[3]->tooltip("(Alt+v)");
+      geo_butt[3]->type(FL_TOGGLE_BUTTON);
+      geo_butt[3]->down_box(TOGGLE_BOX);
+      geo_butt[3]->selection_color(TOGGLE_COLOR);
+
       geo_butt[4] = new Fl_Check_Button(width / 2, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Point numbers");
+      geo_butt[4]->type(FL_TOGGLE_BUTTON);
+      geo_butt[4]->down_box(TOGGLE_BOX);
+      geo_butt[4]->selection_color(TOGGLE_COLOR);
+
       geo_butt[5] = new Fl_Check_Button(width / 2, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Line numbers");
+      geo_butt[5]->type(FL_TOGGLE_BUTTON);
+      geo_butt[5]->down_box(TOGGLE_BOX);
+      geo_butt[5]->selection_color(TOGGLE_COLOR);
+
       geo_butt[6] = new Fl_Check_Button(width / 2, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Surface numbers");
+      geo_butt[6]->type(FL_TOGGLE_BUTTON);
+      geo_butt[6]->down_box(TOGGLE_BOX);
+      geo_butt[6]->selection_color(TOGGLE_COLOR);
+
       geo_butt[7] = new Fl_Check_Button(width / 2, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Volume numbers");
-      for(i = 0; i < 8; i++) {
-        geo_butt[i]->type(FL_TOGGLE_BUTTON);
-        geo_butt[i]->down_box(TOGGLE_BOX);
-        geo_butt[i]->selection_color(TOGGLE_COLOR);
-      }
+      geo_butt[7]->type(FL_TOGGLE_BUTTON);
+      geo_butt[7]->down_box(TOGGLE_BOX);
+      geo_butt[7]->selection_color(TOGGLE_COLOR);
 
       geo_value[0] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Normals");
+      geo_value[0]->minimum(0);
+      geo_value[0]->maximum(500);
+      geo_value[0]->step(1);
+      geo_value[0]->align(FL_ALIGN_RIGHT);
+
       geo_value[1] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Tangents");
-      for(i = 0; i < 2; i++) {
-	geo_value[i]->minimum(0);
-	geo_value[i]->maximum(500);
-	geo_value[i]->step(1);
-        geo_value[i]->align(FL_ALIGN_RIGHT);
-      }
+      geo_value[1]->minimum(0);
+      geo_value[1]->maximum(500);
+      geo_value[1]->step(1);
+      geo_value[1]->align(FL_ALIGN_RIGHT);
+
       o->end();
     }
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Aspect");
       o->hide();
 
-      geo_butt[9] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Enable lighting");
-      geo_butt[9]->type(FL_TOGGLE_BUTTON);
-      geo_butt[9]->down_box(TOGGLE_BOX);
-      geo_butt[9]->selection_color(TOGGLE_COLOR);
-      geo_butt[9]->tooltip("(Alt+w)");
-
-      geo_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point display");
+      geo_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 1 * BH, IW, BH, "Point display");
       geo_choice[0]->menu(menu_point_display);
       geo_choice[0]->align(FL_ALIGN_RIGHT);
 
-      geo_value[3] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Point size");
+      geo_value[3] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point size");
       geo_value[3]->minimum(0.1);
       geo_value[3]->maximum(50);
       geo_value[3]->step(0.1);
+      geo_value[3]->align(FL_ALIGN_RIGHT);
 
-      geo_value[5] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Selected point size");
+      geo_value[5] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Selected point size");
       geo_value[5]->minimum(0.1);
       geo_value[5]->maximum(50);
       geo_value[5]->step(0.1);
+      geo_value[5]->align(FL_ALIGN_RIGHT);
 
-      geo_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 5 * BH, IW, BH, "Line display");
+      geo_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line display");
       geo_choice[1]->menu(menu_line_display);
       geo_choice[1]->align(FL_ALIGN_RIGHT);
 
-      geo_value[4] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Line width");
+      geo_value[4] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Line width");
       geo_value[4]->minimum(0.1);
       geo_value[4]->maximum(50);
       geo_value[4]->step(0.1);
+      geo_value[4]->align(FL_ALIGN_RIGHT);
 
-      geo_value[6] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Selected line width");
+      geo_value[6] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Selected line width");
       geo_value[6]->minimum(0.1);
       geo_value[6]->maximum(50);
       geo_value[6]->step(0.1);
+      geo_value[6]->align(FL_ALIGN_RIGHT);
 
-      for(i = 3; i <= 6; i++) {
-        geo_value[i]->align(FL_ALIGN_RIGHT);
-      }
       o->end();
     }
     {
-      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Colors");
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Light");
+      o->hide();
+
+      geo_butt[9] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Enable lighting");
+      geo_butt[9]->type(FL_TOGGLE_BUTTON);
+      geo_butt[9]->down_box(TOGGLE_BOX);
+      geo_butt[9]->selection_color(TOGGLE_COLOR);
+      geo_butt[9]->tooltip("(Alt+w)");
+
+      o->end();
+    }
+    {
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Color");
       o->hide();
 
       Fl_Scroll *s = new Fl_Scroll(2 * WB, 2 * WB + 1 * BH, IW + 20, height - 4 * WB - 1 * BH);
-      i = 0;
+      int i = 0;
       while(GeometryOptions_Color[i].str) {
         geo_col[i] = new Fl_Button(2 * WB, 2 * WB + (1 + i) * BH, IW, BH, GeometryOptions_Color[i].str);
         geo_col[i]->callback(color_cb, (void *)GeometryOptions_Color[i].function);
         i++;
       }
       s->end();
+
       o->end();
     }
     o->end();
@@ -1790,21 +1869,25 @@ void GUI::create_option_window()
       mesh_value[0]->minimum(0);
       mesh_value[0]->maximum(100);
       mesh_value[0]->step(1);
+      mesh_value[0]->align(FL_ALIGN_RIGHT);
+
       mesh_value[1] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Mesh scaling factor");
       mesh_value[1]->minimum(0.001);
       mesh_value[1]->maximum(1000);
       mesh_value[1]->step(0.001);
+      mesh_value[1]->align(FL_ALIGN_RIGHT);
+
       mesh_value[2] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Characteristic length factor");
       mesh_value[2]->minimum(0.001);
       mesh_value[2]->maximum(1000);
       mesh_value[2]->step(0.001);
+      mesh_value[2]->align(FL_ALIGN_RIGHT);
+
       mesh_value[3] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Random perturbation factor");
       mesh_value[3]->minimum(1.e-6);
       mesh_value[3]->maximum(1.e-1);
       mesh_value[3]->step(1.e-6);
-      for(i = 0; i < 4; i++) {
-        mesh_value[i]->align(FL_ALIGN_RIGHT);
-      }
+      mesh_value[3]->align(FL_ALIGN_RIGHT);
 
       mesh_butt[2] = new Fl_Check_Button(2 * WB, 2 * WB + 8 * BH, BW, BH, "Optimize quality of tetrahedral elements");
       mesh_butt[2]->type(FL_TOGGLE_BUTTON);
@@ -1828,46 +1911,86 @@ void GUI::create_option_window()
     }
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Visibility");
+
       mesh_butt[6] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Nodes");
       mesh_butt[6]->tooltip("(Alt+Shift+p)");
+      mesh_butt[6]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[6]->down_box(TOGGLE_BOX);
+      mesh_butt[6]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[7] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Line elements");
       mesh_butt[7]->tooltip("(Alt+Shift+l)");
+      mesh_butt[7]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[7]->down_box(TOGGLE_BOX);
+      mesh_butt[7]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[8] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Surface element edges");
       mesh_butt[8]->tooltip("(Alt+Shift+s)");
+      mesh_butt[8]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[8]->down_box(TOGGLE_BOX);
+      mesh_butt[8]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[9] = new Fl_Check_Button(2 * WB, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Surface element faces");
       mesh_butt[9]->tooltip("(Alt+Shift+s, Alt+Shift+d)");
+      mesh_butt[9]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[9]->down_box(TOGGLE_BOX);
+      mesh_butt[9]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[10] = new Fl_Check_Button(2 * WB, 2 * WB + 5 * BH, BW / 2 - WB, BH, "Volume element edges");
       mesh_butt[10]->tooltip("(Alt+Shift+v)");
+      mesh_butt[10]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[10]->down_box(TOGGLE_BOX);
+      mesh_butt[10]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[11] = new Fl_Check_Button(2 * WB, 2 * WB + 6 * BH, BW / 2 - WB, BH, "Volume element faces");
       mesh_butt[11]->tooltip("(Alt+Shift+v)");
+      mesh_butt[11]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[11]->down_box(TOGGLE_BOX);
+      mesh_butt[11]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[12] = new Fl_Check_Button(width / 2, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Node numbers");
+      mesh_butt[12]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[12]->down_box(TOGGLE_BOX);
+      mesh_butt[12]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[13] = new Fl_Check_Button(width / 2, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Line element numbers");
+      mesh_butt[13]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[13]->down_box(TOGGLE_BOX);
+      mesh_butt[13]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[14] = new Fl_Check_Button(width / 2, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Surface element numbers");
+      mesh_butt[14]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[14]->down_box(TOGGLE_BOX);
+      mesh_butt[14]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[15] = new Fl_Check_Button(width / 2, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Volume element numbers");
-      for(i = 6; i < 16; i++) {
-        mesh_butt[i]->type(FL_TOGGLE_BUTTON);
-        mesh_butt[i]->down_box(TOGGLE_BOX);
-        mesh_butt[i]->selection_color(TOGGLE_COLOR);
-      }
+      mesh_butt[15]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[15]->down_box(TOGGLE_BOX);
+      mesh_butt[15]->selection_color(TOGGLE_COLOR);
+
       mesh_value[4] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW / 2, BH);
       mesh_value[4]->minimum(0);
       mesh_value[4]->maximum(1);
       mesh_value[4]->step(0.001);
-      mesh_value[5] = new Fl_Value_Input(2 * WB + IW / 2, 2 * WB + 7 * BH, IW / 2, BH, "Quality range");
+      mesh_value[4]->align(FL_ALIGN_RIGHT);
+
+      mesh_value[5] = new Fl_Value_Input(2 * WB + IW / 2, 2 * WB + 7 * BH, IW / 2, BH, "Tetrahedra quality range");
       mesh_value[5]->minimum(0);
       mesh_value[5]->maximum(1);
       mesh_value[5]->step(0.001);
+      mesh_value[5]->align(FL_ALIGN_RIGHT);
 
       mesh_value[6] = new Fl_Value_Input(2 * WB, 2 * WB + 8 * BH, IW / 2, BH);
-      mesh_value[7] = new Fl_Value_Input(2 * WB + IW / 2, 2 * WB + 8 * BH, IW / 2, BH, "Size range");
+      mesh_value[6]->align(FL_ALIGN_RIGHT);
+
+      mesh_value[7] = new Fl_Value_Input(2 * WB + IW / 2, 2 * WB + 8 * BH, IW / 2, BH, "Tetrahedra size range");
+      mesh_value[7]->align(FL_ALIGN_RIGHT);
 
       mesh_value[8] = new Fl_Value_Input(2 * WB, 2 * WB + 9 * BH, IW, BH, "Normals");
       mesh_value[8]->minimum(0);
       mesh_value[8]->maximum(500);
       mesh_value[8]->step(1);
-      for(i = 4; i < 9; i++) {
-        mesh_value[i]->align(FL_ALIGN_RIGHT);
-      }
+      mesh_value[8]->align(FL_ALIGN_RIGHT);
 
       mesh_value[13] = new Fl_Value_Input(2 * WB, 2 * WB + 10 * BH, IW, BH, "Tangents");
       mesh_value[13]->minimum(0);
@@ -1880,27 +2003,45 @@ void GUI::create_option_window()
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Cut plane");
       o->hide();
+
       mesh_butt[16] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Enable");
       mesh_butt[16]->type(FL_TOGGLE_BUTTON);
       mesh_butt[16]->down_box(TOGGLE_BOX);
       mesh_butt[16]->selection_color(TOGGLE_COLOR);
 
       mesh_value[14] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "A");
+      mesh_value[14]->align(FL_ALIGN_RIGHT);
+      mesh_value[14]->callback(mesh_cut_plane_cb);
+      mesh_value[14]->step(0.01);
+      mesh_value[14]->minimum(-1.0);
+      mesh_value[14]->maximum(1.0);
+
       mesh_value[15] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "B");
+      mesh_value[15]->align(FL_ALIGN_RIGHT);
+      mesh_value[15]->callback(mesh_cut_plane_cb);
+      mesh_value[15]->step(0.01);
+      mesh_value[15]->minimum(-1.0);
+      mesh_value[15]->maximum(1.0);
+
       mesh_value[16] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "C");
+      mesh_value[16]->align(FL_ALIGN_RIGHT);
+      mesh_value[16]->callback(mesh_cut_plane_cb);
+      mesh_value[16]->step(0.01);
+      mesh_value[16]->minimum(-1.0);
+      mesh_value[16]->maximum(1.0);
+
       mesh_value[17] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "D");
-      for(i = 14; i <= 17; i++) {
-        mesh_value[i]->align(FL_ALIGN_RIGHT);
-	mesh_value[i]->callback(mesh_cut_plane_cb);
-	mesh_value[i]->step(0.01);
-	mesh_value[i]->minimum(-1.0);
-	mesh_value[i]->maximum(1.0);
-      }
+      mesh_value[17]->align(FL_ALIGN_RIGHT);
+      mesh_value[17]->callback(mesh_cut_plane_cb);
+      mesh_value[17]->step(0.01);
+      mesh_value[17]->minimum(-1.0);
+      mesh_value[17]->maximum(1.0);
 
       mesh_butt[22] = new Fl_Check_Button(2 * WB, 2 * WB + 6 * BH, BW, BH, "Draw intersecting volume layer as surface");
       mesh_butt[22]->type(FL_TOGGLE_BUTTON);
       mesh_butt[22]->down_box(TOGGLE_BOX);
       mesh_butt[22]->selection_color(TOGGLE_COLOR);
+
       mesh_butt[23] = new Fl_Check_Button(2 * WB, 2 * WB + 7 * BH, BW, BH, "Cut only volume elements");
       mesh_butt[23]->type(FL_TOGGLE_BUTTON);
       mesh_butt[23]->down_box(TOGGLE_BOX);
@@ -1911,51 +2052,66 @@ void GUI::create_option_window()
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Aspect");
       o->hide();
-      mesh_butt[17] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Enable lighting");
-      mesh_butt[17]->tooltip("(Alt+w)");
-      mesh_butt[18] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW, BH, "Use two-side lighting");
-      mesh_butt[19] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW, BH, "Smooth normals");
-      for(i = 17; i <= 19; i++) {
-	mesh_butt[i]->type(FL_TOGGLE_BUTTON);
-	mesh_butt[i]->down_box(TOGGLE_BOX);
-	mesh_butt[i]->selection_color(TOGGLE_COLOR);
-      }
-
-      mesh_value[18] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Angle");
-      mesh_value[18]->minimum(0.);
-      mesh_value[18]->maximum(180.);
-      mesh_value[18]->step(1.);
-      mesh_value[18]->align(FL_ALIGN_RIGHT);
 
-      mesh_value[9] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Explode elements");
+      mesh_value[9] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Explosion factor");
       mesh_value[9]->minimum(0);
       mesh_value[9]->maximum(1);
       mesh_value[9]->step(0.01);
-      mesh_value[10] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Point size");
+      mesh_value[9]->align(FL_ALIGN_RIGHT);
+
+      mesh_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point display");
+      mesh_choice[0]->menu(menu_point_display);
+      mesh_choice[0]->align(FL_ALIGN_RIGHT);
+
+      mesh_value[10] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Point size");
       mesh_value[10]->minimum(0.1);
       mesh_value[10]->maximum(50);
       mesh_value[10]->step(0.1);
-      mesh_value[11] = new Fl_Value_Input(2 * WB, 2 * WB + 9 * BH, IW, BH, "Line width");
+      mesh_value[10]->align(FL_ALIGN_RIGHT);
+
+      mesh_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line display");
+      mesh_choice[1]->menu(menu_line_display);
+      mesh_choice[1]->align(FL_ALIGN_RIGHT);
+      mesh_choice[1]->deactivate(); // don't give false hopes, as it's not used anywhere right now
+
+      mesh_value[11] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Line width");
       mesh_value[11]->minimum(0.1);
       mesh_value[11]->maximum(50);
       mesh_value[11]->step(0.1);
-      for(i = 9; i <= 11; i++) {
-        mesh_value[i]->align(FL_ALIGN_RIGHT);
-      }
+      mesh_value[11]->align(FL_ALIGN_RIGHT);
 
-      mesh_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 6 * BH, IW, BH, "Point display");
-      mesh_choice[0]->menu(menu_point_display);
-      mesh_choice[0]->align(FL_ALIGN_RIGHT);
+      o->end();
+    }
+    {
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Light");
+      o->hide();
 
-      mesh_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 8 * BH, IW, BH, "Line display");
-      mesh_choice[1]->menu(menu_line_display);
-      mesh_choice[1]->align(FL_ALIGN_RIGHT);
-      mesh_choice[1]->deactivate(); // don't give false hopes, as it's not used anywhere right now
+      mesh_butt[17] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Enable lighting");
+      mesh_butt[17]->tooltip("(Alt+w)");
+      mesh_butt[17]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[17]->down_box(TOGGLE_BOX);
+      mesh_butt[17]->selection_color(TOGGLE_COLOR);
+
+      mesh_butt[18] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW, BH, "Use two-side lighting");
+      mesh_butt[18]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[18]->down_box(TOGGLE_BOX);
+      mesh_butt[18]->selection_color(TOGGLE_COLOR);
+
+      mesh_butt[19] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW, BH, "Smooth normals");
+      mesh_butt[19]->type(FL_TOGGLE_BUTTON);
+      mesh_butt[19]->down_box(TOGGLE_BOX);
+      mesh_butt[19]->selection_color(TOGGLE_COLOR);
+
+      mesh_value[18] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Smoothing threshold angle");
+      mesh_value[18]->minimum(0.);
+      mesh_value[18]->maximum(180.);
+      mesh_value[18]->step(1.);
+      mesh_value[18]->align(FL_ALIGN_RIGHT);
 
       o->end();
     }
     {
-      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Colors");
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Color");
       o->hide();
 
       static Fl_Menu_Item menu_mesh_color[] = {
@@ -1970,13 +2126,14 @@ void GUI::create_option_window()
       mesh_choice[4]->align(FL_ALIGN_RIGHT);
 
       Fl_Scroll *s = new Fl_Scroll(2 * WB, 3 * WB + 2 * BH, IW + 20, height - 5 * WB - 2 * BH);
-      i = 0;
+      int i = 0;
       while(MeshOptions_Color[i].str) {
         mesh_col[i] = new Fl_Button(2 * WB, 3 * WB + (2 + i) * BH, IW, BH, MeshOptions_Color[i].str);
         mesh_col[i]->callback(color_cb, (void *)MeshOptions_Color[i].function);
         i++;
       }
       s->end();
+
       o->end();
     }
     o->end();
@@ -1994,8 +2151,9 @@ void GUI::create_option_window()
 
       Fl_Box *text = new Fl_Box(FL_NO_BOX, 2 * WB, 3 * WB + 1 * BH, width - 4 * WB, 2 * BH,
 				"There are no global solver options available yet.\n\n"
-				"To define your own solver interface, edit the option file.");
+				"To define your own solver interface, you must edit the option file.");
       text->align(FL_ALIGN_LEFT | FL_ALIGN_TOP | FL_ALIGN_INSIDE | FL_ALIGN_WRAP);
+
       o->end();
     }
     o->end();
@@ -2047,7 +2205,7 @@ void GUI::create_option_window()
 
   // WARNING! Don't forget to add the set_changed_cb() callback to any new widget!
   // initialise all buttons to NULL (see the clear_changed() in view_options_ok_cb)
-  for(i = 0; i < VIEW_OPT_BUTT; i++) {
+  for(int i = 0; i < VIEW_OPT_BUTT; i++) {
     view_butt[i] = NULL;
     view_value[i] = NULL;
     view_input[i] = NULL;
@@ -2059,154 +2217,232 @@ void GUI::create_option_window()
   view_window->hide();
   {
     Fl_Tabs *o = new Fl_Tabs(WB, WB, width - 2 * WB, height - 2 * WB);
-    // General
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "General");
 
       view_butt[1] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW / 2 - WB, BH, "3D view");
+      view_butt[1]->type(FL_RADIO_BUTTON);
+      view_butt[1]->down_box(RADIO_BOX);
+      view_butt[1]->selection_color(RADIO_COLOR);
+      view_butt[1]->callback(set_changed_cb, 0);
+
       view_butt[2] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW / 2 - WB, BH, "2D space table");
-      view_butt[3] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW / 2 - WB, BH, "2D time table");
-      for(i = 1; i <= 3; i++) {
-        view_butt[i]->type(FL_RADIO_BUTTON);
-        view_butt[i]->down_box(RADIO_BOX);
-        view_butt[i]->selection_color(RADIO_COLOR);
-        view_butt[i]->callback(set_changed_cb, 0);
-      }
+      view_butt[2]->type(FL_RADIO_BUTTON);
+      view_butt[2]->down_box(RADIO_BOX);
+      view_butt[2]->selection_color(RADIO_COLOR);
+      view_butt[2]->callback(set_changed_cb, 0);
 
-      view_input[0] = new Fl_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Name");
-      view_input[1] = new Fl_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Format");
-      for(i = 0; i <= 1; i++) {
-        view_input[i]->align(FL_ALIGN_RIGHT);
-        view_input[i]->callback(set_changed_cb, 0);
-      }
+      view_butt[3] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW / 2 - WB, BH, "2D time table");
+      view_butt[3]->type(FL_RADIO_BUTTON);
+      view_butt[3]->down_box(RADIO_BOX);
+      view_butt[3]->selection_color(RADIO_COLOR);
+      view_butt[3]->callback(set_changed_cb, 0);
 
       int sw = (int)(1.5 * fontsize);
-      view_butt_rep[0] = new Fl_Repeat_Button(2 * WB, 2 * WB + 6 * BH, sw, BH, "-");
+      view_butt_rep[0] = new Fl_Repeat_Button(2 * WB, 2 * WB + 4 * BH, sw, BH, "-");
       //no set_changed since has its own callback
-      view_butt_rep[1] = new Fl_Repeat_Button(2 * WB + IW - sw, 2 * WB + 6 * BH, sw, BH, "+");
+      view_butt_rep[1] = new Fl_Repeat_Button(2 * WB + IW - sw, 2 * WB + 4 * BH, sw, BH, "+");
       //no set_changed since has its own callback
-      view_value[50] = new Fl_Value_Input(2 * WB + sw, 2 * WB + 6 * BH, IW - 2 * sw, BH);
+      view_value[50] = new Fl_Value_Input(2 * WB + sw, 2 * WB + 4 * BH, IW - 2 * sw, BH);
       view_value[50]->align(FL_ALIGN_RIGHT);
       view_value[50]->minimum(0);
       view_value[50]->maximum(0);
       view_value[50]->step(1);
       //no set_changed since has its own callback
-      Fl_Box *a = new Fl_Box(2 * WB + IW, 2 * WB + 6 * BH, IW / 2, BH, "Step");
+      Fl_Box *a = new Fl_Box(2 * WB + IW, 2 * WB + 4 * BH, IW / 2, BH, "Step");
       a->box(FL_NO_BOX);
       a->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE);
 
-      view_value[20] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW / 2, BH);
-      view_value[21] = new Fl_Value_Input(2 * WB + IW / 2, 2 * WB + 7 * BH, IW / 2, BH, "Position");
-      view_value[22] = new Fl_Value_Input(2 * WB, 2 * WB + 8 * BH, IW / 2, BH);
-      view_value[23] = new Fl_Value_Input(2 * WB + IW / 2, 2 * WB + 8 * BH, IW / 2, BH, "Size");
-      for(i = 20; i <= 23; i++) {
-        view_value[i]->align(FL_ALIGN_RIGHT);
-        view_value[i]->callback(set_changed_cb, 0);
-      }
+      view_input[0] = new Fl_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Name");
+      view_input[0]->align(FL_ALIGN_RIGHT);
+      view_input[0]->callback(set_changed_cb, 0);
 
-      view_butt[8] = new Fl_Check_Button(width / 2, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Show time");
-      view_butt[5] = new Fl_Check_Button(width / 2, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Show annotations");
-      view_butt[5]->tooltip("(Alt+n)");
-      view_butt[4] = new Fl_Check_Button(width / 2, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Show scale");
-      view_butt[4]->tooltip("(Alt+i)");
-      view_butt[6] = new Fl_Check_Button(width / 2, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Transparent scale");
-      view_butt[7] = new Fl_Check_Button(width / 2, 2 * WB + 5 * BH, BW / 2 - WB, BH, "Auto position");
-      for(i = 4; i <= 8; i++) {
-        view_butt[i]->type(FL_TOGGLE_BUTTON);
-        view_butt[i]->down_box(TOGGLE_BOX);
-        view_butt[i]->selection_color(TOGGLE_COLOR);
-        view_butt[i]->callback(set_changed_cb, 0);
-      }
+      view_input[1] = new Fl_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Format");
+      view_input[1]->align(FL_ALIGN_RIGHT);
+      view_input[1]->callback(set_changed_cb, 0);
 
-      o->end();
-    }
-    // 3D
-    {
-      view_3d = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "3D");
-      view_3d->hide();
-
-      view_butt[10] = new Fl_Check_Button(width / 2, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Show elements");
-      view_butt[11] = new Fl_Check_Button(width / 2, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Enable lighting");
-      view_butt[11]->tooltip("(Alt+w)");
-      view_butt[9]  = new Fl_Check_Button(width / 2, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Use two-side lighting");
-      view_butt[12] = new Fl_Check_Button(width / 2, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Smooth normals");
-      for(i = 9; i <= 12; i++) {
-        view_butt[i]->type(FL_TOGGLE_BUTTON);
-        view_butt[i]->down_box(TOGGLE_BOX);
-        view_butt[i]->selection_color(TOGGLE_COLOR);
-        view_butt[i]->callback(set_changed_cb, 0);
-      }
-      view_value[10] = new Fl_Value_Input(width / 2, 2 * WB + 5 * BH, IW, BH, "Angle");
-      view_value[10]->minimum(0.);
-      view_value[10]->step(1.);
-      view_value[10]->maximum(180.);
-      view_value[11] = new Fl_Value_Input(width / 2, 2 * WB + 6 * BH, IW, BH, "Boundary");
-      view_value[11]->minimum(0);
-      view_value[11]->step(1);
-      view_value[11]->maximum(3);
-      view_value[12] = new Fl_Value_Input(width / 2, 2 * WB + 7 * BH, IW, BH, "Explode");
-      view_value[12]->minimum(0.);
-      view_value[12]->step(0.01);
-      view_value[12]->maximum(1.);
-      for(i = 10; i <= 12; i++) {
-        view_value[i]->align(FL_ALIGN_RIGHT);
-        view_value[i]->callback(set_changed_cb, 0);
+      {
+	view_2d = new Fl_Group(2 * WB, 2 * WB + 7 * BH, width - 2 * WB, 4 * BH, 0);
+	
+	view_input[2] = new Fl_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Abscissa name");
+	view_input[2]->align(FL_ALIGN_RIGHT);
+	view_input[2]->callback(set_changed_cb, 0);
+	
+	view_input[3] = new Fl_Input(2 * WB, 2 * WB + 8 * BH, IW, BH, "Abscissa format");
+	view_input[3]->align(FL_ALIGN_RIGHT);
+	view_input[3]->callback(set_changed_cb, 0);
+	
+	view_value[25] = new Fl_Value_Input(2 * WB, 2 * WB + 9 * BH, IW, BH, "Number of abscissa points");
+	view_value[25]->minimum(0.);
+	view_value[25]->step(1);
+	view_value[25]->maximum(256);
+	view_value[25]->align(FL_ALIGN_RIGHT);
+	view_value[25]->callback(set_changed_cb, 0);
+	
+	static Fl_Menu_Item menu_grid_mode[] = {
+	  {"None", 0, 0, 0},
+	  {"Axes", 0, 0, 0},
+	  {"Box", 0, 0, 0},
+	  {"Full", 0, 0, 0},
+	  {0}
+	};
+	view_choice[8] = new Fl_Choice(2 * WB, 2 * WB + 10 * BH, IW, BH, "Grid mode");
+	view_choice[8]->menu(menu_grid_mode);
+	view_choice[8]->align(FL_ALIGN_RIGHT);
+	view_choice[8]->callback(set_changed_cb, 0);
+	
+	view_2d->end();
       }
 
-      view_butt[13] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Show points");
-      view_butt[14] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Show lines");
-      view_butt[15] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Show triangles");
-      view_butt[16] = new Fl_Check_Button(2 * WB, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Show quadrangles");
-      view_butt[17] = new Fl_Check_Button(2 * WB, 2 * WB + 5 * BH, BW / 2 - WB, BH, "Show tetrahedra");
-      view_butt[18] = new Fl_Check_Button(2 * WB, 2 * WB + 6 * BH, BW / 2 - WB, BH, "Show hexahedra");
-      view_butt[19] = new Fl_Check_Button(2 * WB, 2 * WB + 7 * BH, BW / 2 - WB, BH, "Show prisms");
-      view_butt[20] = new Fl_Check_Button(2 * WB, 2 * WB + 8 * BH, BW / 2 - WB, BH, "Show pyramids");
-      view_butt[21] = new Fl_Check_Button(width / 2, 2 * WB + 8 * BH, BW / 2 - WB, BH, "Show scalar values");
-      view_butt[22] = new Fl_Check_Button(width / 2, 2 * WB + 9 * BH, BW / 2 - WB, BH, "Show vector values");
-      view_butt[23] = new Fl_Check_Button(width / 2, 2 * WB + 10 * BH, BW / 2 - WB, BH, "Show tensor values");
-      for(i = 13; i <= 23; i++) {
-        view_butt[i]->type(FL_TOGGLE_BUTTON);
-        view_butt[i]->down_box(TOGGLE_BOX);
-        view_butt[i]->selection_color(TOGGLE_COLOR);
-        view_butt[i]->callback(set_changed_cb, 0);
-      }
+      view_butt[7] = new Fl_Check_Button(width / 2, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Set position automatically");
+      view_butt[7]->type(FL_TOGGLE_BUTTON);
+      view_butt[7]->down_box(TOGGLE_BOX);
+      view_butt[7]->selection_color(TOGGLE_COLOR);
+      view_butt[7]->callback(set_changed_cb, 0);
+      
+      view_value[20] = new Fl_Value_Input(width /2, 2 * WB + 2 * BH, IW / 2, BH);
+      view_value[20]->align(FL_ALIGN_RIGHT);
+      view_value[20]->callback(set_changed_cb, 0);
+      view_value[20]->minimum(0);
+      view_value[20]->maximum(1024);
+      view_value[20]->step(1);
+      view_value[21] = new Fl_Value_Input(width / 2 + IW / 2, 2 * WB + 2 * BH, IW / 2, BH, "Position");
+      view_value[21]->align(FL_ALIGN_RIGHT);
+      view_value[21]->callback(set_changed_cb, 0);
+      view_value[21]->minimum(0);
+      view_value[21]->maximum(1024);
+      view_value[21]->step(1);
+
+      view_value[22] = new Fl_Value_Input(width /2, 2 * WB + 3 * BH, IW / 2, BH);
+      view_value[22]->align(FL_ALIGN_RIGHT);
+      view_value[22]->callback(set_changed_cb, 0);
+      view_value[22]->minimum(0);
+      view_value[22]->maximum(1024);
+      view_value[22]->step(1);
+      view_value[23] = new Fl_Value_Input(width / 2 + IW / 2, 2 * WB + 3 * BH, IW / 2, BH, "Size");
+      view_value[23]->align(FL_ALIGN_RIGHT);
+      view_value[23]->callback(set_changed_cb, 0);
+      view_value[23]->minimum(0);
+      view_value[23]->maximum(1024);
+      view_value[23]->step(1);
 
-      view_3d->end();
+      o->end();
     }
-    // 2D
     {
-      view_2d = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "2D");
-      view_2d->hide();
-
-      view_input[2] = new Fl_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Abscissa name");
-      view_input[2]->align(FL_ALIGN_RIGHT);
-      view_input[2]->callback(set_changed_cb, 0);
-
-      view_input[3] = new Fl_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Abscissa format");
-      view_input[3]->align(FL_ALIGN_RIGHT);
-      view_input[3]->callback(set_changed_cb, 0);
-
-      view_value[25] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Abscissa points");
-      view_value[25]->minimum(0.);
-      view_value[25]->step(1);
-      view_value[25]->maximum(256);
-      view_value[26] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Grid mode");
-      view_value[26]->minimum(0.);
-      view_value[26]->step(1);
-      view_value[26]->maximum(3);
-      for(i = 25; i <= 26; i++) {
-        view_value[i]->align(FL_ALIGN_RIGHT);
-        view_value[i]->callback(set_changed_cb, 0);
-      }
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Visibility");
+      o->hide();
 
-      view_2d->end();
+      view_butt[13] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Points");
+      view_butt[13]->type(FL_TOGGLE_BUTTON);
+      view_butt[13]->down_box(TOGGLE_BOX);
+      view_butt[13]->selection_color(TOGGLE_COLOR);
+      view_butt[13]->callback(set_changed_cb, 0);
+
+      view_butt[14] = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Lines");
+      view_butt[14]->type(FL_TOGGLE_BUTTON);
+      view_butt[14]->down_box(TOGGLE_BOX);
+      view_butt[14]->selection_color(TOGGLE_COLOR);
+      view_butt[14]->callback(set_changed_cb, 0);
+
+      view_butt[15] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Triangles");
+      view_butt[15]->type(FL_TOGGLE_BUTTON);
+      view_butt[15]->down_box(TOGGLE_BOX);
+      view_butt[15]->selection_color(TOGGLE_COLOR);
+      view_butt[15]->callback(set_changed_cb, 0);
+
+      view_butt[16] = new Fl_Check_Button(2 * WB, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Quadrangles");
+      view_butt[16]->type(FL_TOGGLE_BUTTON);
+      view_butt[16]->down_box(TOGGLE_BOX);
+      view_butt[16]->selection_color(TOGGLE_COLOR);
+      view_butt[16]->callback(set_changed_cb, 0);
+
+      view_butt[17] = new Fl_Check_Button(2 * WB, 2 * WB + 5 * BH, BW / 2 - WB, BH, "Tetrahedra");
+      view_butt[17]->type(FL_TOGGLE_BUTTON);
+      view_butt[17]->down_box(TOGGLE_BOX);
+      view_butt[17]->selection_color(TOGGLE_COLOR);
+      view_butt[17]->callback(set_changed_cb, 0);
+
+      view_butt[18] = new Fl_Check_Button(2 * WB, 2 * WB + 6 * BH, BW / 2 - WB, BH, "Hexahedra");
+      view_butt[18]->type(FL_TOGGLE_BUTTON);
+      view_butt[18]->down_box(TOGGLE_BOX);
+      view_butt[18]->selection_color(TOGGLE_COLOR);
+      view_butt[18]->callback(set_changed_cb, 0);
+
+      view_butt[19] = new Fl_Check_Button(2 * WB, 2 * WB + 7 * BH, BW / 2 - WB, BH, "Prisms");
+      view_butt[19]->type(FL_TOGGLE_BUTTON);
+      view_butt[19]->down_box(TOGGLE_BOX);
+      view_butt[19]->selection_color(TOGGLE_COLOR);
+      view_butt[19]->callback(set_changed_cb, 0);
+
+      view_butt[20] = new Fl_Check_Button(2 * WB, 2 * WB + 8 * BH, BW / 2 - WB, BH, "Pyramids");
+      view_butt[20]->type(FL_TOGGLE_BUTTON);
+      view_butt[20]->down_box(TOGGLE_BOX);
+      view_butt[20]->selection_color(TOGGLE_COLOR);
+      view_butt[20]->callback(set_changed_cb, 0);
+
+      view_butt[4] = new Fl_Check_Button(width / 2, 2 * WB + 1 * BH, BW / 2 - WB, BH, "Scale");
+      view_butt[4]->tooltip("(Alt+i)");
+      view_butt[4]->type(FL_TOGGLE_BUTTON);
+      view_butt[4]->down_box(TOGGLE_BOX);
+      view_butt[4]->selection_color(TOGGLE_COLOR);
+      view_butt[4]->callback(set_changed_cb, 0);
+
+      view_butt[8] = new Fl_Check_Button(width / 2, 2 * WB + 2 * BH, BW / 2 - WB, BH, "Step value");
+      view_butt[8]->type(FL_TOGGLE_BUTTON);
+      view_butt[8]->down_box(TOGGLE_BOX);
+      view_butt[8]->selection_color(TOGGLE_COLOR);
+      view_butt[8]->callback(set_changed_cb, 0);
+
+      view_butt[5] = new Fl_Check_Button(width / 2, 2 * WB + 3 * BH, BW / 2 - WB, BH, "Annotations");
+      view_butt[5]->tooltip("(Alt+n)");
+      view_butt[5]->type(FL_TOGGLE_BUTTON);
+      view_butt[5]->down_box(TOGGLE_BOX);
+      view_butt[5]->selection_color(TOGGLE_COLOR);
+      view_butt[5]->callback(set_changed_cb, 0);
+
+      view_butt[10] = new Fl_Check_Button(width / 2, 2 * WB + 4 * BH, BW / 2 - WB, BH, "Element edges");
+      view_butt[10]->type(FL_TOGGLE_BUTTON);
+      view_butt[10]->down_box(TOGGLE_BOX);
+      view_butt[10]->selection_color(TOGGLE_COLOR);
+      view_butt[10]->callback(set_changed_cb, 0);
+
+      static Fl_Menu_Item menu_boundary[] = {
+	{"None", 0, 0, 0},
+	{"Dimension - 1", 0, 0, 0},
+	{"Dimension - 2", 0, 0, 0},
+	{"Dimension - 3", 0, 0, 0},
+	{0}
+      };
+      view_choice[9] = new Fl_Choice(width / 2, 2 * WB + 5 * BH, IW, BH, "Boundary");
+      view_choice[9]->menu(menu_boundary);
+      view_choice[9]->align(FL_ALIGN_RIGHT);
+      view_choice[9]->callback(set_changed_cb, 0);
+
+      view_butt[21] = new Fl_Check_Button(width / 2, 2 * WB + 6 * BH, BW / 2 - WB, BH, "Scalar values");
+      view_butt[21]->type(FL_TOGGLE_BUTTON);
+      view_butt[21]->down_box(TOGGLE_BOX);
+      view_butt[21]->selection_color(TOGGLE_COLOR);
+      view_butt[21]->callback(set_changed_cb, 0);
+
+      view_butt[22] = new Fl_Check_Button(width / 2, 2 * WB + 7 * BH, BW / 2 - WB, BH, "Vector values");
+      view_butt[22]->type(FL_TOGGLE_BUTTON);
+      view_butt[22]->down_box(TOGGLE_BOX);
+      view_butt[22]->selection_color(TOGGLE_COLOR);
+      view_butt[22]->callback(set_changed_cb, 0);
+
+      view_butt[23] = new Fl_Check_Button(width / 2, 2 * WB + 8 * BH, BW / 2 - WB, BH, "Tensor values");
+      view_butt[23]->type(FL_TOGGLE_BUTTON);
+      view_butt[23]->down_box(TOGGLE_BOX);
+      view_butt[23]->selection_color(TOGGLE_COLOR);
+      view_butt[23]->callback(set_changed_cb, 0);
+      
+      o->end();
     }
-    // Range
     {
       view_range = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Range");
       view_range->hide();
 
-      view_value[30] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Intervals");
+      view_value[30] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Number of intervals");
       view_value[30]->align(FL_ALIGN_RIGHT);
       view_value[30]->minimum(1);
       view_value[30]->maximum(256);
@@ -2240,11 +2476,12 @@ void GUI::create_option_window()
       //view_choice[7]->callback(set_changed_cb, 0);
 
       view_value[31] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Custom minimum");
+      view_value[31]->align(FL_ALIGN_RIGHT);
+      view_value[31]->callback(set_changed_cb, 0);
+
       view_value[32] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Custom maximum");
-      for(i = 31; i <= 32; i++) {
-        view_value[i]->align(FL_ALIGN_RIGHT);
-        view_value[i]->callback(set_changed_cb, 0);
-      }
+      view_value[32]->align(FL_ALIGN_RIGHT);
+      view_value[32]->callback(set_changed_cb, 0);
 
       static Fl_Menu_Item menu_scale[] = {
         {"Linear", 0, 0, 0},
@@ -2257,7 +2494,7 @@ void GUI::create_option_window()
       view_choice[1]->align(FL_ALIGN_RIGHT);
       view_choice[1]->callback(set_changed_cb, 0);
 
-      view_butt[38] = new Fl_Check_Button(2 * WB, 2 * WB + 7 * BH, IW, BH, "Saturate values");
+      view_butt[38] = new Fl_Check_Button(2 * WB, 2 * WB + 7 * BH, BW, BH, "Saturate values");
       view_butt[38]->type(FL_TOGGLE_BUTTON);
       view_butt[38]->down_box(TOGGLE_BOX);
       view_butt[38]->selection_color(TOGGLE_COLOR);
@@ -2265,45 +2502,65 @@ void GUI::create_option_window()
 
       view_range->end();
     }
-    // Offset and Raise
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Offset");
       o->hide();
+
       view_value[40] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "X offset");
+      view_value[40]->align(FL_ALIGN_RIGHT);
+      view_value[40]->callback(set_changed_cb, 0);
+
       view_value[41] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Y offset");
+      view_value[41]->align(FL_ALIGN_RIGHT);
+      view_value[41]->callback(set_changed_cb, 0);
+
       view_value[42] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Z offset");
+      view_value[42]->align(FL_ALIGN_RIGHT);
+      view_value[42]->callback(set_changed_cb, 0);
+
       view_value[43] = new Fl_Value_Input(width / 2, 2 * WB + 1 * BH, IW, BH, "X raise");
+      view_value[43]->align(FL_ALIGN_RIGHT);
+      view_value[43]->callback(set_changed_cb, 0);
+
       view_value[44] = new Fl_Value_Input(width / 2, 2 * WB + 2 * BH, IW, BH, "Y raise");
+      view_value[44]->align(FL_ALIGN_RIGHT);
+      view_value[44]->callback(set_changed_cb, 0);
+
       view_value[45] = new Fl_Value_Input(width / 2, 2 * WB + 3 * BH, IW, BH, "Z raise");
-      for(i = 40; i <= 45; i++) {
-        view_value[i]->align(FL_ALIGN_RIGHT);
-        view_value[i]->callback(set_changed_cb, 0);
-      }
+      view_value[45]->align(FL_ALIGN_RIGHT);
+      view_value[45]->callback(set_changed_cb, 0);
+
       o->end();
     }
-    // Aspect
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Aspect");
       o->hide();
 
-      view_choice[5] = new Fl_Choice(2 * WB, 2 * WB + 1 * BH, IW, BH, "Point display");
+      view_value[12] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Explosion factor");
+      view_value[12]->minimum(0.);
+      view_value[12]->step(0.01);
+      view_value[12]->maximum(1.);
+      view_value[12]->align(FL_ALIGN_RIGHT);
+      view_value[12]->callback(set_changed_cb, 0);
+
+      view_choice[5] = new Fl_Choice(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point display");
       view_choice[5]->menu(menu_point_display);
       view_choice[5]->align(FL_ALIGN_RIGHT);
       view_choice[5]->callback(set_changed_cb, 0);
 
-      view_value[61] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point size");
+      view_value[61] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Point size");
       view_value[61]->minimum(0.1);
       view_value[61]->maximum(50);
       view_value[61]->step(0.1);
       view_value[61]->align(FL_ALIGN_RIGHT);
       view_value[61]->callback(set_changed_cb, 0);
 
-      view_choice[6] = new Fl_Choice(2 * WB, 2 * WB + 3 * BH, IW, BH, "Line display");
+      view_choice[6] = new Fl_Choice(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line display");
       view_choice[6]->menu(menu_line_display);
       view_choice[6]->align(FL_ALIGN_RIGHT);
       view_choice[6]->callback(set_changed_cb, 0);
 
-      view_value[62] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line width");
+      view_value[62] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Line width");
       view_value[62]->minimum(0.1);
       view_value[62]->maximum(50);
       view_value[62]->step(0.1);
@@ -2311,7 +2568,7 @@ void GUI::create_option_window()
       view_value[62]->callback(set_changed_cb, 0);
 
       {
-        view_vector = new Fl_Group(2 * WB, 2 * WB + 4 * BH, width - 2 * WB, 6 * BH, 0);
+        view_vector = new Fl_Group(2 * WB, 2 * WB + 6 * BH, width - 2 * WB, 5 * BH, 0);
 
         static Fl_Menu_Item menu_vectype[] = {
           {"Line", 0, 0, 0},
@@ -2321,21 +2578,21 @@ void GUI::create_option_window()
           {"Displacement", 0, 0, 0},
           {0}
         };
-        view_choice[2] = new Fl_Choice(2 * WB, 2 * WB + 5 * BH, IW, BH, "Vector display");
+        view_choice[2] = new Fl_Choice(2 * WB, 2 * WB + 6 * BH, IW, BH, "Vector display");
         view_choice[2]->menu(menu_vectype);
         view_choice[2]->align(FL_ALIGN_RIGHT);
         view_choice[2]->callback(set_changed_cb, 0);
 
-	view_push_butt[0] = new Fl_Button(2 * IW - 2 * WB, 2 * WB + 5 * BH, (int)(1.5*BB), BH, "Edit arrow shape");
+	view_push_butt[0] = new Fl_Button(2 * IW - 2 * WB, 2 * WB + 6 * BH, (int)(1.5*BB), BH, "Edit arrow shape");
       
-        view_value[60] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Arrow size");
+        view_value[60] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Arrow size");
         view_value[60]->minimum(0);
         view_value[60]->maximum(500);
         view_value[60]->step(1);
         view_value[60]->align(FL_ALIGN_RIGHT);
         view_value[60]->callback(set_changed_cb, 0);
 
-        view_value[63] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Displacement factor");
+        view_value[63] = new Fl_Value_Input(2 * WB, 2 * WB + 8 * BH, IW, BH, "Displacement factor");
         view_value[63]->align(FL_ALIGN_RIGHT);
         view_value[63]->callback(set_changed_cb, 0);
 
@@ -2344,7 +2601,7 @@ void GUI::create_option_window()
           {"Vertex centered", 0, 0, 0},
           {0}
         };
-        view_choice[3] = new Fl_Choice(2 * WB, 2 * WB + 8 * BH, IW, BH, "Arrow location");
+        view_choice[3] = new Fl_Choice(2 * WB, 2 * WB + 9 * BH, IW, BH, "Arrow location");
         view_choice[3]->menu(menu_vecloc);
         view_choice[3]->align(FL_ALIGN_RIGHT);
         view_choice[3]->callback(set_changed_cb, 0);
@@ -2354,7 +2611,7 @@ void GUI::create_option_window()
           //{"Eigenvectors", 0, 0, 0}, //not implemented yet
           {0}
         };
-        view_choice[4] = new Fl_Choice(2 * WB, 2 * WB + 9 * BH, IW, BH, "Tensor display");
+        view_choice[4] = new Fl_Choice(2 * WB, 2 * WB + 10 * BH, IW, BH, "Tensor display");
         view_choice[4]->menu(menu_tensor);
         view_choice[4]->align(FL_ALIGN_RIGHT);
         view_choice[4]->callback(set_changed_cb, 0);
@@ -2364,13 +2621,52 @@ void GUI::create_option_window()
 
       o->end();
     }
-    // Colors
     {
-      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB, "Colors");
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB, "Light");
       o->hide();
+
+      view_butt[11] = new Fl_Check_Button(2 * WB, 2 * WB + 1 * BH, BW, BH, "Enable lighting");
+      view_butt[11]->tooltip("(Alt+w)");
+      view_butt[11]->type(FL_TOGGLE_BUTTON);
+      view_butt[11]->down_box(TOGGLE_BOX);
+      view_butt[11]->selection_color(TOGGLE_COLOR);
+      view_butt[11]->callback(set_changed_cb, 0);
+
+      view_butt[9]  = new Fl_Check_Button(2 * WB, 2 * WB + 2 * BH, BW, BH, "Use two-side lighting");
+      view_butt[9]->type(FL_TOGGLE_BUTTON);
+      view_butt[9]->down_box(TOGGLE_BOX);
+      view_butt[9]->selection_color(TOGGLE_COLOR);
+      view_butt[9]->callback(set_changed_cb, 0);
+
+      view_butt[12] = new Fl_Check_Button(2 * WB, 2 * WB + 3 * BH, BW, BH, "Smooth normals");
+      view_butt[12]->type(FL_TOGGLE_BUTTON);
+      view_butt[12]->down_box(TOGGLE_BOX);
+      view_butt[12]->selection_color(TOGGLE_COLOR);
+      view_butt[12]->callback(set_changed_cb, 0);
+
+      view_value[10] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Smoothing threshold angle");
+      view_value[10]->minimum(0.);
+      view_value[10]->step(1.);
+      view_value[10]->maximum(180.);
+      view_value[10]->align(FL_ALIGN_RIGHT);
+      view_value[10]->callback(set_changed_cb, 0);
+      
+      o->end();
+    }
+    {
+      Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB, "Color");
+      o->hide();
+
       view_colorbar_window = new Colorbar_Window(2 * WB, 2 * WB + BH, width - 4 * WB, height - 4 * WB - BH);
       view_colorbar_window->end();
-      //no set_changed since colorbarwindow has its own callbacks
+      // no 'set_changed' since Colorbar_Window has its own callbacks
+
+      // this exposes the MacOSX clipping bug with a regular subwindow:
+      //view_colorbar_window->hide();
+      //Fl_Window *ww = new Fl_Window(2 * WB, 2 * WB + BH, width - 4 * WB, height - 4 * WB - BH);
+      //ww->box(FL_DOWN_BOX);
+      //ww->end();
+
       o->end();
     }
     o->end();
@@ -2390,13 +2686,11 @@ void GUI::update_view_window(int num)
   view_number = num;
   Post_View *v = (Post_View *) List_Pointer(CTX.post.list, num);
 
-  // general
   opt_view_name(num, GMSH_GUI, NULL);
   opt_view_format(num, GMSH_GUI, NULL);
   opt_view_type(num, GMSH_GUI, 0);
   opt_view_show_scale(num, GMSH_GUI, 0);
   opt_view_draw_strings(num, GMSH_GUI, 0);
-  opt_view_transparent_scale(num, GMSH_GUI, 0);
   opt_view_auto_position(num, GMSH_GUI, 0);
   if(v->NbSP) {
     view_butt[2]->activate();
@@ -2411,14 +2705,11 @@ void GUI::update_view_window(int num)
   opt_view_size0(num, GMSH_GUI, 0);
   opt_view_size1(num, GMSH_GUI, 0);
 
-  //3D
   if(v->TextOnly) {
-    view_3d->deactivate();
     view_range->deactivate();
     view_butt[1]->deactivate();
   }
   else {
-    view_3d->activate();
     view_range->activate();
     view_butt[1]->activate();
   }
@@ -2441,7 +2732,6 @@ void GUI::update_view_window(int num)
   opt_view_draw_vectors(num, GMSH_GUI, 0);
   opt_view_draw_tensors(num, GMSH_GUI, 0);
 
-  //2D
   if(v->NbSP)
     view_2d->activate();
   else
@@ -2451,7 +2741,6 @@ void GUI::update_view_window(int num)
   opt_view_nb_abscissa(num, GMSH_GUI, 0);
   opt_view_grid(num, GMSH_GUI, 0);
 
-  // range
   opt_view_nb_iso(num, GMSH_GUI, 0);
   opt_view_intervals_type(num, GMSH_GUI, 0);
   int range_type = (int)opt_view_range_type(num, GMSH_GUI, 0);
@@ -2468,7 +2757,6 @@ void GUI::update_view_window(int num)
   opt_view_scale_type(num, GMSH_GUI, 0);
   opt_view_saturate_values(num, GMSH_GUI, 0);
 
-  // offset/raise
   opt_view_offset0(num, GMSH_GUI, 0);
   opt_view_offset1(num, GMSH_GUI, 0);
   opt_view_offset2(num, GMSH_GUI, 0);
@@ -2490,7 +2778,6 @@ void GUI::update_view_window(int num)
     view_value[i]->maximum(val2);
   }
 
-  // timestep
   if(v->NbTimeStep == 1) {
     view_value[50]->deactivate();
     view_butt_rep[0]->deactivate();
@@ -2510,7 +2797,6 @@ void GUI::update_view_window(int num)
   opt_view_timestep(num, GMSH_GUI, 0);
   opt_view_show_time(num, GMSH_GUI, 0);
 
-  // aspect
   if(v->ScalarOnly)
     view_vector->deactivate();
   else
@@ -2526,7 +2812,6 @@ void GUI::update_view_window(int num)
   opt_view_tensor_type(num, GMSH_GUI, 0);
   view_push_butt[0]->callback(view_arrow_param_cb, (void*)num);
 
-  // colors
   view_colorbar_window->update(v->Name, v->Min, v->Max, &v->CT, &v->Changed);
 }
 
@@ -3431,9 +3716,9 @@ void GUI::create_solver_window(int num)
       Fl_Button *b = new Fl_Button(2 * WB, 3 * WB + 2 * BH, BB, BH, "Choose");
       b->callback(solver_choose_executable_cb, (void *)num);
 
-      solver[num].butt[2] = new Fl_Check_Button(2 * WB, 4 * WB + 3 * BH, LL, BH, "Client/server connection");
-      solver[num].butt[0] = new Fl_Check_Button(2 * WB, 4 * WB + 4 * BH, LL, BH, "Automatic message display");
-      solver[num].butt[1] = new Fl_Check_Button(2 * WB, 4 * WB + 5 * BH, LL, BH, "Automatic view merge");
+      solver[num].butt[2] = new Fl_Check_Button(2 * WB, 4 * WB + 3 * BH, LL, BH, "Enable client-server connection");
+      solver[num].butt[0] = new Fl_Check_Button(2 * WB, 4 * WB + 4 * BH, LL, BH, "Display client messages");
+      solver[num].butt[1] = new Fl_Check_Button(2 * WB, 4 * WB + 5 * BH, LL, BH, "Merge views automatically");
       for(i = 0; i < 3; i++) {
         solver[num].butt[i]->type(FL_TOGGLE_BUTTON);
         solver[num].butt[i]->down_box(TOGGLE_BOX);
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index 2dda47851a7e6bd445d6309a84dcd620aa89668a..27c3119b72b3caaa128105af2765e414d8b4c349 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -191,7 +191,7 @@ public:
   // view options
   int view_number ;
   Fl_Window        *view_window ;
-  Fl_Group         *view_3d, *view_2d, *view_range, *view_vector ;
+  Fl_Group         *view_2d, *view_range, *view_vector ;
 #define VIEW_OPT_BUTT 100
   Fl_Check_Button  *view_butt[VIEW_OPT_BUTT] ;
   Fl_Value_Input   *view_value[VIEW_OPT_BUTT] ;
diff --git a/Fltk/Solvers.cpp b/Fltk/Solvers.cpp
index b18f73f876a61fb6a687eb0b662dd2eab4412f95..8a71c879e579804bdd0b93552e061cc5b61cf448 100644
--- a/Fltk/Solvers.cpp
+++ b/Fltk/Solvers.cpp
@@ -1,4 +1,4 @@
-// $Id: Solvers.cpp,v 1.25 2004-05-22 01:24:17 geuzaine Exp $
+// $Id: Solvers.cpp,v 1.26 2004-07-30 12:22:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -74,7 +74,7 @@ int Solver(int num, char *args)
       break;
     case -4:
       Msg(GERROR,
-          "Solver not responding (is '%s' correctly installed/in your path?)",
+          "Solver not responding (is '%s' correctly installed and in your path?)",
           SINFO[num].executable_name);
       break;
     case -5:
diff --git a/TODO b/TODO
index 0e2f6f9f98128dc3ecca62adae67dd73c9965607..773d31a8cb02e794ad24855264328dc045e64095 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-$Id: TODO,v 1.58 2004-07-15 02:43:32 geuzaine Exp $
+$Id: TODO,v 1.59 2004-07-30 12:22:01 geuzaine Exp $
 
 add an interactive way to choose the orientation of surfaces in
 surface loops and lines in line loops
@@ -9,6 +9,11 @@ normals...)
 
 ********************************************************************
 
+fix the orientation of hexas, prisms and pyramids (reorder nodes
+according to Orientation())
+
+********************************************************************
+
 add parameter to transformation operations to copy the meshes
 
 ********************************************************************
@@ -25,8 +30,8 @@ add ternary operator and <,>,<=,>=,== tests in MathEval
 
 ********************************************************************
 
-on Macs, datasets with a bounding box < 1.e06 don't display properly
-(probably because all OpenGL stuff is done inetrnally in single
+on Macs, datasets with a bounding box < 1.e-06 don't display properly
+(probably because all the OpenGL stuff is done ineternally in single
 precision...). Rescale?
 
 ********************************************************************
@@ -43,11 +48,6 @@ format...
 
 ********************************************************************
 
-add an option to plot the bounding box of views, with or without
-labels (scales)
-
-********************************************************************
-
 find a better way to display the time/timestep in the scale...
 
 ********************************************************************
@@ -110,8 +110,9 @@ All surface meshes are made in a mean plane. If your surface cannot be
 projected into a plane with a 1-to-1 correspondance between the nodes,
 then gmsh will fail. 
 
-We should definitely use a better projection algorithm. See the work
-by Desbrun et al. in CS for this.
+We should definitely use a better projection algorithm
+(e.g. intrinstic parameterization). See the work by Desbrun et al. in
+CS for this.
 
 ********************************************************************
 
diff --git a/doc/VERSIONS b/doc/VERSIONS
index d9e29bccb3cd9e7e582d40d4597e713e30c183d8..09b821cdb2d86bfa820da0fb89f69a80bc6b573b 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,9 +1,10 @@
-$Id: VERSIONS,v 1.238 2004-07-23 05:11:18 geuzaine Exp $
+$Id: VERSIONS,v 1.239 2004-07-30 12:22:02 geuzaine Exp $
 
 New since 1.54: added background mesh support for Triangle; meshes can
 now be displayed using "smoothed" normals (like post-processing
 views); added GUI for clipping planes; new interactive
-clipping/cutting plane definition; small bug fixes.
+clipping/cutting plane definition; reorganized the Options GUI; small
+bug fixes.
 
 New in 1.54: integrated Netgen (3D mesh quality optimization +
 alternative 3D algorithm); Extrude Surface now always automatically
diff --git a/doc/texinfo/opt_general.texi b/doc/texinfo/opt_general.texi
index d5341bfb228fd0ff9db8364a20d846a3dd79d70b..d5cb01ddf3142b026df5e7de829bef01e3ed3fd6 100644
--- a/doc/texinfo/opt_general.texi
+++ b/doc/texinfo/opt_general.texi
@@ -81,7 +81,7 @@ Saved in: @code{-}
 
 @item General.Clip0A
 First coefficient in equation for clipping plane 0 (`A' in `AX+BY+CZ+D=0')@*
-Default value: @code{0}@*
+Default value: @code{1}@*
 Saved in: @code{-}
 
 @item General.Clip0B
@@ -106,7 +106,7 @@ Saved in: @code{-}
 
 @item General.Clip1A
 First coefficient in equation for clipping plane 1@*
-Default value: @code{0}@*
+Default value: @code{1}@*
 Saved in: @code{-}
 
 @item General.Clip1B
@@ -131,7 +131,7 @@ Saved in: @code{-}
 
 @item General.Clip2A
 First coefficient in equation for clipping plane 2@*
-Default value: @code{0}@*
+Default value: @code{1}@*
 Saved in: @code{-}
 
 @item General.Clip2B
@@ -156,7 +156,7 @@ Saved in: @code{-}
 
 @item General.Clip3A
 First coefficient in equation for clipping plane 3@*
-Default value: @code{0}@*
+Default value: @code{1}@*
 Saved in: @code{-}
 
 @item General.Clip3B
@@ -181,7 +181,7 @@ Saved in: @code{-}
 
 @item General.Clip4A
 First coefficient in equation for clipping plane 4@*
-Default value: @code{0}@*
+Default value: @code{1}@*
 Saved in: @code{-}
 
 @item General.Clip4B
@@ -206,7 +206,7 @@ Saved in: @code{-}
 
 @item General.Clip5A
 First coefficient in equation for clipping plane 5@*
-Default value: @code{0}@*
+Default value: @code{1}@*
 Saved in: @code{-}
 
 @item General.Clip5B
diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi
index 76b97bb17591f15db1ed935f80e9b1c0ab2ce5cb..8fee166038878a29a87c8ceb3e19aae66e15145e 100644
--- a/doc/texinfo/opt_mesh.texi
+++ b/doc/texinfo/opt_mesh.texi
@@ -54,6 +54,11 @@ Draw the intersection volume layer as a surface@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
+@item Mesh.CutPlaneOnlyVolume
+Cut only the volume elements@*
+Default value: @code{0}@*
+Saved in: @code{-}
+
 @item Mesh.CutPlaneA
 First cut plane equation coefficient (`A' in `AX+BY+CZ+D=0')@*
 Default value: @code{1}@*