diff --git a/Geo/gmshSurface.cpp b/Geo/gmshSurface.cpp
index 4602825aa5a0e0a0cff8cabd1fa34fc28585b5f7..c178318f2cf5abd5e2432a77b4b0177e36307eef 100644
--- a/Geo/gmshSurface.cpp
+++ b/Geo/gmshSurface.cpp
@@ -89,8 +89,8 @@ SPoint3 gmshPolarSphere::point(double parA, double parB) const
   //at the center of the sphere 
   //parA=2rx/(r+z) parB=2ry/(r+z)
   double rp2 = parA * parA + parB * parB;
-  SPoint3 p(2*parA/(1+rp2),2*parB/(1+rp2),(rp2-1)/(rp2+1));
-  p *= -r;
+  double z=r*(4*r*r-rp2)/(4*r*r+rp2);
+  SPoint3 p(parA*(r+z)/(2*r),parB*(r+z)/(2*r),z);
   p += o;
   return p;
 }
@@ -135,7 +135,7 @@ SPoint3 gmshParametricSurface::point(double par1, double par2) const
   Msg::Error("MathEval is not compiled in this version of Gmsh");
   return SPoint3(0.,0.,0.);
 #else
-  char *names[2] = {"u", "v"};
+  char *names[2] = {(char*)"u", (char*)"v"};
   double values [2] = {par1, par2};
   const double x = evaluator_evaluate(evalX, 2, names, values);
   const double y = evaluator_evaluate(evalY, 2, names, values);
diff --git a/Plugin/GSHHS.cpp b/Plugin/GSHHS.cpp
index e8b5cdc4bc83fd2f451680a27d46f8c38b9bbf90..fcc09a52f82792a5c1a54b225a3142d9f5368104 100644
--- a/Plugin/GSHHS.cpp
+++ b/Plugin/GSHHS.cpp
@@ -51,7 +51,7 @@ class GMSH_GSHHSPlugin:public GMSH_Post_Plugin
       }
     };
     class reader_gshhs:public reader{
-      /*	$Id: GSHHS.cpp,v 1.20 2009-01-12 16:17:37 remacle Exp $
+      /*	$Id: GSHHS.cpp,v 1.21 2009-01-13 11:11:39 remacle Exp $
        *
        * Include file defining structures used in gshhs.c
        *
@@ -766,8 +766,8 @@ class GMSH_GSHHSPlugin:public GMSH_Post_Plugin
         file->close();
       }
       void add_point(SPoint3 point){
-        SPoint3 pll;
-        SPoint2 stereo(-point.x() / (1 + point.z()), -point.y() / (1 + point.z()));
+        double r=sqrt(point.x()*point.x()+point.y()*point.y()+point.z()*point.z());
+        SPoint2 stereo(2*r*point.x() / (r + point.z()), 2*r*point.y() / (r + point.z()));
         loop_buff << "Point ( IP + " << ip++ << " ) = {" << stereo.
           x() << ", " << stereo.y() << ", " << 0 << " };\n";
       }