diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp
index db2583a770d33d819aca36772af1dfdc54775a4f..fdecf9a6705d07ca149e953da4a9ac42591b7f23 100644
--- a/Geo/MElementCut.cpp
+++ b/Geo/MElementCut.cpp
@@ -723,7 +723,7 @@ static void elementCutMesh(MElement *e, gLevelset *ls,
         MTriangle *tri;
         if(p1 || p2) tri = new MTriangleBorder(mv[0], mv[1], mv[2], p1, p2, ++numEle, ePart);
         else tri = new MTriangle(mv[0], mv[1], mv[2], ++numEle, ePart);
-        double lsT = triangles[i].lsTag();
+        int lsT = triangles[i].lsTag();
         int c = elements[2].count(lsT) + elements[3].count(lsT);
         // suppose that the surfaces have been cut before the volumes!
         int reg = getBorderTag(lsT, c, newtags[2][0], borderTags[1]);
diff --git a/Mesh/highOrderSmoother.cpp b/Mesh/highOrderSmoother.cpp
index 85c1e8850cd88ab2b6ea96ec6a4c648a22181498..b371c532266bd05cef8f1757eb4f87709aa182ef 100644
--- a/Mesh/highOrderSmoother.cpp
+++ b/Mesh/highOrderSmoother.cpp
@@ -698,7 +698,7 @@ void highOrderSmoother::smooth(std::vector<MElement*> &all)
 
     // assembly of the elasticity term on the
     // set of elements
-    for (int i = 0; i < v.size(); i++){
+    for (unsigned int i = 0; i < v.size(); i++){
       SElement se(v[i]);
       El.addToMatrix(myAssembler, &se);
     }
diff --git a/contrib/DiscreteIntegration/Integration3D.h b/contrib/DiscreteIntegration/Integration3D.h
index 9875ebc0662a6e105d3e888e5c3a0c1725845c94..e993da8e8f3f3d615280b1aea83097ea98df8d8f 100644
--- a/contrib/DiscreteIntegration/Integration3D.h
+++ b/contrib/DiscreteIntegration/Integration3D.h
@@ -74,7 +74,7 @@ class DI_Point
   inline bool isInsideDomain  () const {return Ls.back() < 0.;}
   inline bool isOutsideDomain () const {return Ls.back() > 0.;}
   inline bool isOnBorder      () const {return Ls.back() == 0.;}
-  inline double lsTag() const {
+  inline int lsTag() const {
     if(isInsideDomain()) return 1;
     if(isOutsideDomain()) return -1;
     return 0;