diff --git a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
index f8174b5eb3103d0ccd7f991c8b010890b61d8659..ebe132ac949df7e5ccc66ce126b10be21692689a 100644
--- a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
+++ b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
@@ -316,9 +316,10 @@ void Mesh::distSqToStraight(std::vector<double> &dSq)
 
 void Mesh::updateGEntityPositions()
 {
-
-  for (int iV = 0; iV < nVert(); iV++) _vert[iV]->setXYZ(_xyz[iV].x(),_xyz[iV].y(),_xyz[iV].z());
-
+  for (int iV = 0; iV < nVert(); iV++)
+    _vert[iV]->setXYZ(_xyz[iV].x(),_xyz[iV].y(),_xyz[iV].z()); 
+  for (int iFV = 0; iFV < nFV(); iFV++)
+    _pc->exportParamCoord(_freeVert[iFV], _uvw[iFV]);
 }
 
 
diff --git a/contrib/HighOrderMeshOptimizer/ParamCoord.cpp b/contrib/HighOrderMeshOptimizer/ParamCoord.cpp
index ccaba35d92abcfb79de17512b383fe578514cea3..bfe1fc18fb688c2f951edfbfe2ee2a98c54be18d 100644
--- a/contrib/HighOrderMeshOptimizer/ParamCoord.cpp
+++ b/contrib/HighOrderMeshOptimizer/ParamCoord.cpp
@@ -4,8 +4,6 @@
 #include "MVertex.h"
 #include "ParamCoord.h"
 
-
-
 ParamCoordSurf::ParamCoordSurf(GEntity *ge)
 {
   if ((ge->dim() == 2) && (ge->geomType() != GEntity::DiscreteSurface)) _gf = static_cast<GFace*>(ge);
@@ -172,3 +170,10 @@ void ParamCoordParent::gXyz2gUvw(MVertex* vert, const SPoint3 &uvw, const std::v
   }
 
 }
+
+void ParamCoordParent::exportParamCoord(MVertex *v, const SPoint3 &uvw)
+{
+  for (int d = 0; d < v->onWhat()->dim(); ++d) {
+    v->setParameter(d, uvw[d]);
+  }
+}
diff --git a/contrib/HighOrderMeshOptimizer/ParamCoord.h b/contrib/HighOrderMeshOptimizer/ParamCoord.h
index 4f70573e9aeddeeb18e695d24f9cc9d48c158562..cb3db207db7cd24f2381a02e607b33c24b25db7b 100644
--- a/contrib/HighOrderMeshOptimizer/ParamCoord.h
+++ b/contrib/HighOrderMeshOptimizer/ParamCoord.h
@@ -8,6 +8,7 @@ class ParamCoord
 
 public:
 
+  virtual void exportParamCoord(MVertex *v, const SPoint3 &uvw) {};
   virtual int nCoord(MVertex* vert) = 0;                                                 // Number of parametric coordinates for vertex
   virtual SPoint3 getUvw(MVertex* vert) = 0;                                             // Get parametric coordinates of vertex
   virtual SPoint3 uvw2Xyz(MVertex* vert, const SPoint3 &uvw) = 0;                        // Calculate physical coordinates from parametric coordinates of vertex
@@ -89,6 +90,7 @@ class ParamCoordParent : public ParamCoord
 public:
 
   int nCoord(MVertex* vert) { return vert->onWhat()->dim(); }
+  virtual void exportParamCoord(MVertex *v, const SPoint3 &uvw);
   virtual SPoint3 getUvw(MVertex* vert);
   virtual SPoint3 uvw2Xyz(MVertex* vert, const SPoint3 &uvw);
   virtual void gXyz2gUvw(MVertex* vert, const SPoint3 &uvw, const SPoint3 &gXyz, SPoint3 &gUvw);