diff --git a/Fltk/graphicWindow.cpp b/Fltk/graphicWindow.cpp
index 4bfb2fffd1b6b0700cbdf53b3ca38490a56ccb87..625685f3fd5ef138d1d59a16eb346b06a60bf680 100644
--- a/Fltk/graphicWindow.cpp
+++ b/Fltk/graphicWindow.cpp
@@ -1613,12 +1613,14 @@ static std::vector<std::string> getInfoStrings(MElement *ele)
   }
   {
     std::ostringstream sstream;
+    sstream.precision(12);
     SPoint3 pt = ele->barycenter();
     sstream << " Barycenter: (" << pt[0] << ", " << pt[1] << ", " << pt[2] << ")";
     info.push_back(sstream.str());
   }
   {
     std::ostringstream sstream;
+    sstream.precision(12);
     sstream << " Edge length: "
             << "min = " << ele->minEdge() << " "
             << "max = " << ele->maxEdge();
@@ -1626,6 +1628,7 @@ static std::vector<std::string> getInfoStrings(MElement *ele)
   }
   {
     std::ostringstream sstream;
+    sstream.precision(12);
     sstream << " Quality: "
         << "gamma = " << ele->gammaShapeMeasure() << " "
         << "rho = " << ele->rhoShapeMeasure();
@@ -1633,6 +1636,7 @@ static std::vector<std::string> getInfoStrings(MElement *ele)
   }
   {
     std::ostringstream sstream;
+    sstream.precision(12);
     double sICNMin, sICNMax;
     ele->signedInvCondNumRange(sICNMin, sICNMax);
     sstream << " SICN range: " << sICNMin << " " << sICNMax;
@@ -1640,6 +1644,7 @@ static std::vector<std::string> getInfoStrings(MElement *ele)
   }
   {
     std::ostringstream sstream;
+    sstream.precision(12);
     sstream << " Inner / outer radius: "
             << ele->getInnerRadius() << " / " << ele->getOuterRadius();
     info.push_back(sstream.str());
diff --git a/Fltk/inputRange.h b/Fltk/inputRange.h
index 8425f03d571e06a0114c647dd95a8c7ba7018aef..17e350ce2bf71e04c1f03933542c722a11f3e4a5 100644
--- a/Fltk/inputRange.h
+++ b/Fltk/inputRange.h
@@ -32,6 +32,7 @@ class inputRange : public Fl_Group {
   void _values2string()
   {
     std::ostringstream tmp;
+    tmp.precision(12);
     if(_choices.size()){
       // construct range string using choices
       for(unsigned int i = 0; i < _choices.size(); i++){
diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index 423db30402ad3f43180fc5fcde7fb1d7f7846add..68bd1e8b0c989275d9effbbffd305a54f636c21e 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -176,6 +176,8 @@ void GEdge::setVisibility(char val, bool recursive)
 std::string GEdge::getAdditionalInfoString()
 {
   std::ostringstream sstream;
+  sstream.precision(12);
+
   if(v0 && v1) sstream << "{" << v0->tag() << " " << v1->tag() << "}";
 
   if(meshAttributes.method == MESH_TRANSFINITE){
diff --git a/Geo/GModelIO_GEO.cpp b/Geo/GModelIO_GEO.cpp
index fea9a70242a536832d5222ad1229bae977a76874..baabc9ff4c0a8209a388ab2b6a469139a31d8f53 100644
--- a/Geo/GModelIO_GEO.cpp
+++ b/Geo/GModelIO_GEO.cpp
@@ -491,7 +491,7 @@ int GModel::writeGEO(const std::string &name, bool printLabels, bool onlyPhysica
     if(meshSizeParameters.find(val) == meshSizeParameters.end()){
       std::ostringstream paramName;
       paramName << "cl__" << ++cpt;
-      fprintf(fp, "%s = %.16g;\n", paramName.str().c_str(),val);
+      fprintf(fp, "%s = %.16g;\n", paramName.str().c_str(), val);
       meshSizeParameters.insert(std::make_pair(val, paramName.str()));
     }
   }
diff --git a/Geo/GVertex.cpp b/Geo/GVertex.cpp
index 445543c8181e290e606e4e2bdd4558b8c388c462..312b6c41676914d8779753396ac301b4a0f4ecad 100644
--- a/Geo/GVertex.cpp
+++ b/Geo/GVertex.cpp
@@ -61,6 +61,7 @@ SPoint2 GVertex::reparamOnFace(const GFace *gf, int) const
 std::string GVertex::getAdditionalInfoString()
 {
   std::ostringstream sstream;
+  sstream.precision(12);
   sstream << "{" << x() << "," << y() << "," << z() << "}";
   double lc = prescribedMeshSizeAtVertex();
   if(lc < MAX_LC) sstream << " (mesh size: " << lc << ")";
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index a16fe3983f8b9f042c462ee2f9d39ae40a6489d0..4d00a05d096afdfc1122daceaa669054ff1b2974 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -11754,6 +11754,7 @@ void PrintParserSymbols(bool help, std::vector<std::string> &vec)
       it != gmsh_yysymbols.end(); it++){
     gmsh_yysymbol s(it->second);
     std::ostringstream sstream;
+    sstream.precision(12);
     sstream << it->first;
     if(s.list){
       sstream << "[] = {";
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 06a407bad1a8b2439acc3bd2e01f032bcd0d1743..9c2a70342b1096e1e214c011409b384b846ca1a5 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -5554,6 +5554,7 @@ void PrintParserSymbols(bool help, std::vector<std::string> &vec)
       it != gmsh_yysymbols.end(); it++){
     gmsh_yysymbol s(it->second);
     std::ostringstream sstream;
+    sstream.precision(12);
     sstream << it->first;
     if(s.list){
       sstream << "[] = {";
diff --git a/utils/misc/package_gmsh_getdp.sh b/utils/misc/package_gmsh_getdp.sh
index 556a783ed7011d49507107dc0030206455be2fb3..d6f5322b6e254888ed13187f17919da142f2d580 100755
--- a/utils/misc/package_gmsh_getdp.sh
+++ b/utils/misc/package_gmsh_getdp.sh
@@ -8,6 +8,9 @@ Gmsh (http://gmsh.info) and GetDP (http://getdp.info).
 Both Gmsh and GetDP are distributed under the terms of the GNU General Public
 License. See the LICENSE and CREDITS files for more information. 
 
+The Gmsh tutorial and sample GetDP models are provided in the tutorial and
+models directories.
+
 See the official websites http://gmsh.info and http://getdp.info for
 up-to-date versions, documentation and examples." > /tmp/README.txt
 
@@ -17,6 +20,17 @@ GETDP=svn
 #GMSH=2.8.5
 #GETDP=2.4.4
 
+MODELS='machines relay inductor indheat magnetometer antennas acoustic_scattering time_reversal shielding waveguides transfo_simple ddm_wave_simple bloch_periodic_waveguides magnets thermal_conduction'
+
+# get onelab models
+mkdir /tmp/models
+for m in ${MODELS}; do
+  curl -O http://onelab.info/files/${m}.zip
+  mkdir /tmp/models/$m
+  unzip -q -o ${m}.zip -d /tmp/models/$m
+  rm -f ${m}.zip
+done
+
 rm -rf gmsh-getdp-Windows64
 mkdir gmsh-getdp-Windows64
 curl -O http://geuz.org/gmsh/bin/Windows/gmsh-${GMSH}-Windows64.zip
@@ -29,10 +43,12 @@ cp /tmp/README.txt gmsh-getdp-Windows64
 mv /tmp/gmsh-*${GMSH}-Windows/gmsh.exe gmsh-getdp-Windows64
 mv /tmp/gmsh-*${GMSH}-Windows/onelab.py gmsh-getdp-Windows64
 mv /tmp/getdp-*${GETDP}-Windows/getdp.exe gmsh-getdp-Windows64
-mv /tmp/gmsh-*${GMSH}-Windows/LICENSE.txt gmsh-getdp-Windows64/LICENSE_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Windows/LICENSE.txt gmsh-getdp-Windows64/LICENSE_GetDP.txt
-mv /tmp/gmsh-*${GMSH}-Windows/CREDITS.txt gmsh-getdp-Windows64/CREDITS_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Windows/CREDITS.txt gmsh-getdp-Windows64/CREDITS_GetDP.txt
+mv /tmp/gmsh-*${GMSH}-Windows/LICENSE.txt gmsh-getdp-Windows64/LICENSE.txt
+cat /tmp/getdp-*${GETDP}-Windows/LICENSE.txt >> gmsh-getdp-Windows64/LICENSE.txt
+mv /tmp/gmsh-*${GMSH}-Windows/CREDITS.txt gmsh-getdp-Windows64/CREDITS.txt
+cat /tmp/getdp-*${GETDP}-Windows/CREDITS.txt >> gmsh-getdp-Windows64/CREDITS.txt
+mv /tmp/gmsh-*${GMSH}-Windows/tutorial gmsh-getdp-Windows64
+cp -R /tmp/models gmsh-getdp-Windows64
 rm -rf /tmp/gmsh-*
 rm -rf /tmp/getdp-*
 zip -r gmsh-getdp-Windows64.zip gmsh-getdp-Windows64
@@ -50,10 +66,12 @@ cp /tmp/README.txt gmsh-getdp-Windows32
 mv /tmp/gmsh-*${GMSH}-Windows/gmsh.exe gmsh-getdp-Windows32
 mv /tmp/gmsh-*${GMSH}-Windows/onelab.py gmsh-getdp-Windows32
 mv /tmp/getdp-*${GETDP}-Windows/getdp.exe gmsh-getdp-Windows32
-mv /tmp/gmsh-*${GMSH}-Windows/LICENSE.txt gmsh-getdp-Windows32/LICENSE_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Windows/LICENSE.txt gmsh-getdp-Windows32/LICENSE_GetDP.txt
-mv /tmp/gmsh-*${GMSH}-Windows/CREDITS.txt gmsh-getdp-Windows32/CREDITS_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Windows/CREDITS.txt gmsh-getdp-Windows32/CREDITS_GetDP.txt
+mv /tmp/gmsh-*${GMSH}-Windows/LICENSE.txt gmsh-getdp-Windows32/LICENSE.txt
+cat /tmp/getdp-*${GETDP}-Windows/LICENSE.txt >> gmsh-getdp-Windows32/LICENSE.txt
+mv /tmp/gmsh-*${GMSH}-Windows/CREDITS.txt gmsh-getdp-Windows32/CREDITS.txt
+cat /tmp/getdp-*${GETDP}-Windows/CREDITS.txt >> gmsh-getdp-Windows32/CREDITS.txt
+mv /tmp/gmsh-*${GMSH}-Windows/tutorial gmsh-getdp-Windows32
+cp -R /tmp/models gmsh-getdp-Windows32
 rm -rf /tmp/gmsh-*
 rm -rf /tmp/getdp-*
 zip -r gmsh-getdp-Windows32.zip gmsh-getdp-Windows32
@@ -71,10 +89,12 @@ cp /tmp/README.txt gmsh-getdp-Linux32
 mv /tmp/gmsh-*${GMSH}-Linux/bin/gmsh gmsh-getdp-Linux32
 mv /tmp/gmsh-*${GMSH}-Linux/bin/onelab.py gmsh-getdp-Linux32
 mv /tmp/getdp-*${GETDP}-Linux/bin/getdp gmsh-getdp-Linux32
-mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/LICENSE.txt gmsh-getdp-Linux32/LICENSE_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/LICENSE.txt gmsh-getdp-Linux32/LICENSE_GetDP.txt
-mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/CREDITS.txt gmsh-getdp-Linux32/CREDITS_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/CREDITS.txt gmsh-getdp-Linux32/CREDITS_GetDP.txt
+mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/LICENSE.txt gmsh-getdp-Linux32/LICENSE.txt
+cat /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/LICENSE.txt >> gmsh-getdp-Linux32/LICENSE.txt
+mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/CREDITS.txt gmsh-getdp-Linux32/CREDITS.txt
+cat /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/CREDITS.txt >> gmsh-getdp-Linux32/CREDITS.txt
+mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/tutorial gmsh-getdp-Linux32
+cp -R /tmp/models gmsh-getdp-Linux32
 rm -rf /tmp/gmsh-*
 rm -rf /tmp/getdp-*
 zip -r gmsh-getdp-Linux32.zip gmsh-getdp-Linux32
@@ -92,10 +112,12 @@ cp /tmp/README.txt gmsh-getdp-Linux64
 mv /tmp/gmsh-*${GMSH}-Linux/bin/gmsh gmsh-getdp-Linux64
 mv /tmp/gmsh-*${GMSH}-Linux/bin/onelab.py gmsh-getdp-Linux64
 mv /tmp/getdp-*${GETDP}-Linux/bin/getdp gmsh-getdp-Linux64
-mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/LICENSE.txt gmsh-getdp-Linux64/LICENSE_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/LICENSE.txt gmsh-getdp-Linux64/LICENSE_GetDP.txt
-mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/CREDITS.txt gmsh-getdp-Linux64/CREDITS_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/CREDITS.txt gmsh-getdp-Linux64/CREDITS_GetDP.txt
+mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/LICENSE.txt gmsh-getdp-Linux64/LICENSE.txt
+cat /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/LICENSE.txt >> gmsh-getdp-Linux64/LICENSE.txt
+mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/CREDITS.txt gmsh-getdp-Linux64/CREDITS.txt
+cat /tmp/getdp-*${GETDP}-Linux/share/doc/getdp/CREDITS.txt >> gmsh-getdp-Linux64/CREDITS.txt
+mv /tmp/gmsh-*${GMSH}-Linux/share/doc/gmsh/tutorial gmsh-getdp-Linux64
+cp -R /tmp/models gmsh-getdp-Linux64
 rm -rf /tmp/gmsh-*
 rm -rf /tmp/getdp-*
 zip -r gmsh-getdp-Linux64.zip gmsh-getdp-Linux64
@@ -114,10 +136,12 @@ tar zxvf /tmp/getdp-${GETDP}-MacOSX64c.tgz -C /tmp
 cp /tmp/README.txt gmsh-getdp-MacOSX
 cp -R gmsh_mount/Gmsh.app gmsh-getdp-MacOSX
 mv /tmp/getdp-*${GETDP}-MacOSX/bin/getdp gmsh-getdp-MacOSX/Gmsh.app/Contents/MacOS/
-cp gmsh_mount/LICENSE.txt gmsh-getdp-MacOSX/LICENSE_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-MacOSX/share/doc/getdp/LICENSE.txt gmsh-getdp-MacOSX/LICENSE_GetDP.txt
-cp gmsh_mount/CREDITS.txt gmsh-getdp-MacOSX/CREDITS_Gmsh.txt
-mv /tmp/getdp-*${GETDP}-MacOSX/share/doc/getdp/CREDITS.txt gmsh-getdp-MacOSX/CREDITS_GetDP.txt
+cp gmsh_mount/LICENSE.txt gmsh-getdp-MacOSX/LICENSE.txt
+cat /tmp/getdp-*${GETDP}-MacOSX/share/doc/getdp/LICENSE.txt >> gmsh-getdp-MacOSX/LICENSE.txt
+cp gmsh_mount/CREDITS.txt gmsh-getdp-MacOSX/CREDITS.txt
+cat /tmp/getdp-*${GETDP}-MacOSX/share/doc/getdp/CREDITS.txt >> gmsh-getdp-MacOSX/CREDITS.txt
+cp -R gmsh_mount/tutorial gmsh-getdp-MacOSX
+cp -R /tmp/models gmsh-getdp-MacOSX
 umount gmsh_mount
 rm -rf /tmp/gmsh-*
 rm -rf /tmp/getdp-*