diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 4eb29773b226f7dd83d201ef385099d86e7a91fd..172f1e1b350540d50bd6341d3ffab872b57d2515 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -14,7 +14,6 @@
 #include "Context.h"
 
 #if defined(HAVE_OCC)
-#include <TColStd_MapIteratorOfMapOfAsciiString.hxx>
 #include <Standard_Version.hxx>
 #include <Geom_CylindricalSurface.hxx>
 #include <Geom_ConicalSurface.hxx>
@@ -26,8 +25,6 @@
 #include <Geom_Plane.hxx>
 #include <gp_Pln.hxx>
 #include <BRepMesh_FastDiscret.hxx>
-#include <BRepMesh_PDiscretRoot.hxx>
-#include <BRepMesh_DiscretFactory.hxx>
 #include <IntTools_Context.hxx>
 #include <BOPTools_Tools2D.hxx>
 #include <BOPTools_Tools3D.hxx>
@@ -339,37 +336,16 @@ bool OCCFace::buildSTLTriangulation(bool force)
 
   Bnd_Box aBox;
   BRepBndLib::Add(s, aBox);
-
-  Standard_Real aDiscret, aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
-  Standard_Real dX, dY, dZ, dMax, aCoeff, aAngle = .5;
-  aBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
-  dX=aXmax-aXmin;
-  dY=aYmax-aYmin;
-  dZ=aZmax-aZmin;
-  dMax=dX;
-  if (dY>dMax) {
-    dMax=dY;
-  }
-  if (dZ>dMax) {
-    dMax=dZ;
-  }
-  //                                                                                                                                      
-  aCoeff=0.1;
-  aDiscret=aCoeff*dMax;
-
-  //  std::cout << BRepMesh_DiscretFactory::Get().Names() << "\n";
-  //  const TColStd_MapOfAsciiString &aaa = BRepMesh_DiscretFactory::Get().Names();
-  //  TColStd_MapIteratorOfMapOfAsciiString It (aaa); 
-  //  for (; It.More(); It.Next()) {
-  //    std::cout << It.Key() << "\n";
-  //  }
-
-  BRepMesh_PDiscretRoot pAlgo = BRepMesh_DiscretFactory::Get().Discret(s, aDiscret, aAngle);
-  if (pAlgo)  pAlgo->Perform();
+  BRepMesh_FastDiscret aMesher(0.1, 0.5, aBox, Standard_False, Standard_False, 
+                               Standard_True, Standard_False);
+#if (OCC_VERSION_MAJOR == 6) && (OCC_VERSION_MINOR < 5)
+  aMesher.Add(s);
+#else
+  aMesher.Perform(s);
+#endif
 
   TopLoc_Location loc;
   Handle(Poly_Triangulation) triangulation = BRep_Tool::Triangulation(s, loc);
-  
 
   if(triangulation.IsNull() || !triangulation->HasUVNodes()){
     if(triangulation.IsNull())