diff --git a/graf3d/eve7/inc/ROOT/REveCsgOps.hxx b/graf3d/eve7/inc/ROOT/REveCsgOps.hxx
index 1c5f92fa85195581ded34aa4543e4970fd56021c..2c855e595452a99b9a63a4885bec2293064a7065 100644
--- a/graf3d/eve7/inc/ROOT/REveCsgOps.hxx
+++ b/graf3d/eve7/inc/ROOT/REveCsgOps.hxx
@@ -7,7 +7,6 @@
 #include "Rtypes.h"
 
 class TBuffer3D;
-class TGeoMatrix;
 
 namespace ROOT {
 namespace Experimental {
@@ -24,7 +23,7 @@ public:
 };
 
 
-TBaseMesh *ConvertToMesh(const TBuffer3D &buff, TGeoMatrix *matr = nullptr);
+TBaseMesh *ConvertToMesh(const TBuffer3D &buff);
 TBaseMesh *BuildUnion(const TBaseMesh *leftOperand, const TBaseMesh *rightOperand);
 TBaseMesh *BuildIntersection(const TBaseMesh *leftOperand, const TBaseMesh *rightOperand);
 TBaseMesh *BuildDifference(const TBaseMesh *leftOperand, const TBaseMesh *rightOperand);
diff --git a/graf3d/eve7/src/REveCsgOps.cxx b/graf3d/eve7/src/REveCsgOps.cxx
index 72951bb6203fde423044dc0e86cfd1dcc33985a3..51f761e71cf32c8aecac11536f7c732a2b8e910c 100644
--- a/graf3d/eve7/src/REveCsgOps.cxx
+++ b/graf3d/eve7/src/REveCsgOps.cxx
@@ -72,13 +72,6 @@
 #include "Rtypes.h"
 #include "TMath.h"
 
-// #include <ROOT/REveGeoShape.hxx>
-// #include <ROOT/REveUtil.hxx>
-
-// #include "TBuffer3DTypes.h"
-#include "TGeoMatrix.h"
-
-
 namespace ROOT {
 namespace Experimental {
 namespace EveCsg {
@@ -2639,22 +2632,15 @@ AMesh_t *build_difference(const AMesh_t &meshA, const AMesh_t &meshB, Bool_t pre
 
 /////////////////////////////////////////////////////////////////////////////
 
-TBaseMesh *ConvertToMesh(const TBuffer3D &buff, TGeoMatrix *matr)
+TBaseMesh *ConvertToMesh(const TBuffer3D &buff)
 {
    AMesh_t *newMesh = new AMesh_t;
    const Double_t *v = buff.fPnts;
 
    newMesh->Verts().resize(buff.NbPnts());
 
-   Double_t dmaster[3];
-
    for (Int_t i = 0; i < (int) buff.NbPnts(); ++i) {
-      if (matr) {
-         matr->LocalToMaster(&v[i*3], dmaster);
-         newMesh->Verts()[i] = TVertexBase(dmaster[0], dmaster[1], dmaster[2]);
-      } else {
-         newMesh->Verts()[i] = TVertexBase(v[i * 3], v[i * 3 + 1], v[i * 3 + 2]);
-      }
+      newMesh->Verts()[i] = TVertexBase(v[i * 3], v[i * 3 + 1], v[i * 3 + 2]);
    }
 
    const Int_t *segs = buff.fSegs;
diff --git a/graf3d/eve7/src/REveGeoPolyShape.cxx b/graf3d/eve7/src/REveGeoPolyShape.cxx
index 52708655e541fb5c3c1b70a234b1285298d37f40..e6621deb3d7a3084b9c7b87da62ebeab62a74237 100644
--- a/graf3d/eve7/src/REveGeoPolyShape.cxx
+++ b/graf3d/eve7/src/REveGeoPolyShape.cxx
@@ -48,7 +48,7 @@ Bool_t REveGeoPolyShape::GetAutoCalculateNormals()         { return fgAutoCalcul
 ////////////////////////////////////////////////////////////////////////
 /// Function produces mesh for provided shape, applying matrix to the result
 
-std::unique_ptr<EveCsg::TBaseMesh> MakeMesh(TGeoMatrix *matr, TGeoShape *shape)
+std::unique_ptr<EveCsg::TBaseMesh> MakeGeoMesh(TGeoMatrix *matr, TGeoShape *shape)
 {
    TGeoCompositeShape *comp = dynamic_cast<TGeoCompositeShape *> (shape);
 
@@ -56,7 +56,19 @@ std::unique_ptr<EveCsg::TBaseMesh> MakeMesh(TGeoMatrix *matr, TGeoShape *shape)
 
    if (!comp) {
       std::unique_ptr<TBuffer3D> b3d(shape->MakeBuffer3D());
-      res.reset(EveCsg::ConvertToMesh(*b3d.get(), matr));
+
+      if (matr) {
+         Double_t *v = b3d->fPnts;
+         Double_t buf[3];
+         for (UInt_t i = 0; i < b3d->NbPnts(); ++i) {
+            buf[0] = v[i*3];
+            buf[1] = v[i*3+1];
+            buf[2] = v[i*3+2];
+            matr->LocalToMaster(buf, &v[i*3]);
+         }
+      }
+
+      res.reset(EveCsg::ConvertToMesh(*b3d.get()));
    } else {
       auto node = comp->GetBoolNode();
 
@@ -64,10 +76,10 @@ std::unique_ptr<EveCsg::TBaseMesh> MakeMesh(TGeoMatrix *matr, TGeoShape *shape)
       if (matr) { mleft = *matr; mright = *matr; }
 
       mleft.Multiply(node->GetLeftMatrix());
-      auto left = MakeMesh(&mleft, node->GetLeftShape());
+      auto left = MakeGeoMesh(&mleft, node->GetLeftShape());
 
       mright.Multiply(node->GetRightMatrix());
-      auto right = MakeMesh(&mright, node->GetRightShape());
+      auto right = MakeGeoMesh(&mright, node->GetRightShape());
 
       if (node->IsA() == TGeoUnion::Class()) res.reset(EveCsg::BuildUnion(left.get(), right.get()));
       if (node->IsA() == TGeoIntersection::Class()) res.reset(EveCsg::BuildIntersection(left.get(), right.get()));
@@ -103,7 +115,7 @@ REveGeoPolyShape::REveGeoPolyShape(TGeoCompositeShape *cshape, Int_t n_seg) :
 
    REveGeoManagerHolder gmgr(REveGeoShape::GetGeoManager(), n_seg);
 
-   auto mesh = MakeMesh(nullptr, cshape);
+   auto mesh = MakeGeoMesh(nullptr, cshape);
 
    Int_t nv = mesh->NumberOfVertices();
    fVertices.reserve(3 * nv);