diff --git a/Numeric/JacobianBasis.h b/Numeric/JacobianBasis.h
index 5aa77258dca7432f05553b2177dd22e9af5745ed..31890fc5f0d69c636b706aea668b744ffb0d6f9a 100644
--- a/Numeric/JacobianBasis.h
+++ b/Numeric/JacobianBasis.h
@@ -62,7 +62,7 @@ class JacobianBasis {
   inline void primJac2Jac(const fullVector<double> &primJac, fullVector<double> &jac) const {
     matrixPrimJac2Jac.mult(primJac,jac);
   }
-  inline void subDivisor(const fullVector<double> &bez, fullVector<double> &result) const {
+  inline void subdivideBezierCoeff(const fullVector<double> &bez, fullVector<double> &result) const {
     bezier->subDivisor.mult(bez,result);
   }
 
diff --git a/Numeric/bezierBasis.cpp b/Numeric/bezierBasis.cpp
index cf2d14c8e413d63e9b30f4c83ba82de74c950fc6..c7ea74ce3cd9844e89658b0c4b29df63bede5ead 100644
--- a/Numeric/bezierBasis.cpp
+++ b/Numeric/bezierBasis.cpp
@@ -287,6 +287,14 @@ static std::vector< fullMatrix<double> > generateSubPointsPyr(int order)
   prox.add(.5);
 
   for (int i = 0; i < 8; ++i) {
+    if (i == 0) {
+      for (int j = 0; j < nPts; ++j) {
+        const double factor = (1. - 2*subPoints[i](j, 2));
+        subPoints[i](j, 0) = subPoints[i](j, 0) * factor;
+        subPoints[i](j, 1) = subPoints[i](j, 1) * factor;
+      }
+      continue;
+    }
     for (int j = 0; j < nPts; ++j) {
       const double factor = (1. - subPoints[i](j, 2));
       subPoints[i](j, 0) = subPoints[i](j, 0) * factor;
diff --git a/Plugin/AnalyseCurvedMesh.cpp b/Plugin/AnalyseCurvedMesh.cpp
index 182e76d5dabcd734618d2e971d7be0b86efcef48..58f3d04685dd8d4d79fca6f8bbf09acf1719aca8 100644
--- a/Plugin/AnalyseCurvedMesh.cpp
+++ b/Plugin/AnalyseCurvedMesh.cpp
@@ -336,7 +336,7 @@ int GMSH_AnalyseCurvedMeshPlugin::subDivision(const JacobianBasis *jb,
                                               int depth)
 {
   fullVector<double> newJacobian(jb->getNumSubNodes());
-  jb->subDivisor(jacobian, newJacobian);
+  jb->subdivideBezierCoeff(jacobian, newJacobian);
 
   for (int i = 0; i < jb->getNumDivisions(); i++)
   for (int j = 0; j < jb->getNumLagCoeff(); j++)
diff --git a/Plugin/AnalyseCurvedMesh.h b/Plugin/AnalyseCurvedMesh.h
index 5f8ed131251eab1b13f519718e3170a1526f85d2..46c4d0d3a7cf95bb1a461cec55e438b950865597 100644
--- a/Plugin/AnalyseCurvedMesh.h
+++ b/Plugin/AnalyseCurvedMesh.h
@@ -72,7 +72,7 @@ private:
 public:
   BezierJacobian(fullVector<double> &, const JacobianBasis *, int depth);
   void subDivisions(fullVector<double> &vect) const
-    {_jfs->subDivisor(_jacBez, vect);}
+    {_jfs->subdivideBezierCoeff(_jacBez, vect);}
   
   inline int depth() const {return _depthSub;}
   inline double minJ() const {return _minJ;}