diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index e894cac9d8051017cc6a5f1577b1b7a640ee928b..4c36342817995af01719b56eceb07fb341033002 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -529,8 +529,8 @@ void GModel::getPhysicalGroups(std::map<int, std::vector<GEntity*> > groups[4])
   for(unsigned int i = 0; i < entities.size(); i++){
     std::map<int, std::vector<GEntity*> > &group(groups[entities[i]->dim()]);
     for(unsigned int j = 0; j < entities[i]->physicals.size(); j++){
-      // physicals can be stored with negative signs when the entity
-      // should be "reversed"
+      // physicals can be stored with negative signs when the entity should be
+      // "reversed"
       int p = std::abs(entities[i]->physicals[j]);
       group[p].push_back(entities[i]);
     }
@@ -552,8 +552,8 @@ void GModel::getPhysicalGroups(int dim, std::map<int, std::vector<GEntity*> > &g
   getEntities(entities, dim);
   for(unsigned int i = 0; i < entities.size(); i++){
     for(unsigned int j = 0; j < entities[i]->physicals.size(); j++){
-      // physicals can be stored with negative signs when the entity
-      // should be "reversed"
+      // physicals can be stored with negative signs when the entity should be
+      // "reversed"
       int p = std::abs(entities[i]->physicals[j]);
       groups[p].push_back(entities[i]);
     }
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 00e4abb4b1ab946e3d7f8960ebda9dfe9e562112..9f549877eb273083fa395d3eacaf8c13f0e501e7 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -10151,7 +10151,7 @@ yyreduce:
             gf->meshAttributes.transfiniteArrangement = (yyvsp[(5) - (6)].i);
             if(corners.empty() || corners.size() == 3 || corners.size() == 4){
               for(unsigned int j = 0; j < corners.size(); j++){
-                GVertex *gv = GModel::current()->getVertexByTag(std::abs(corners[j]));
+                GVertex *gv = GModel::current()->getVertexByTag(corners[j]);
                 if(gv)
                   gf->meshAttributes.corners.push_back(gv);
                 else
@@ -10196,7 +10196,7 @@ yyreduce:
             gr->meshAttributes.method = MESH_TRANSFINITE;
             if(corners.empty() || corners.size() == 6 || corners.size() == 8){
               for(unsigned int i = 0; i < corners.size(); i++){
-                GVertex *gv = GModel::current()->getVertexByTag(std::abs(corners[i]));
+                GVertex *gv = GModel::current()->getVertexByTag(corners[i]);
                 if(gv)
                   gr->meshAttributes.corners.push_back(gv);
                 else
@@ -10710,7 +10710,7 @@ yyreduce:
       for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){
 	double dnum;
 	List_Read((yyvsp[(3) - (4)].l), i, &dnum);
-	int num = (int)fabs(dnum);
+	int num = (int)dnum;
         GModel::current()->getGEOInternals()->setDegenerated(1, num);
         GEdge *ge = GModel::current()->getEdgeByTag(num);
         if(ge) ge->setTooSmall(true);
@@ -13296,8 +13296,8 @@ void addPeriodicFace(int iTarget, int iSource,
   if(GModel::current()->getGEOInternals()->getChanged())
     GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
-  GFace *target = GModel::current()->getFaceByTag(abs(iTarget));
-  GFace *source = GModel::current()->getFaceByTag(abs(iSource));
+  GFace *target = GModel::current()->getFaceByTag(std::abs(iTarget));
+  GFace *source = GModel::current()->getFaceByTag(std::abs(iSource));
   if (!target || !source) {
     Msg::Error("Could not find edge slave %d or master %d for periodic copy",
                iTarget, iSource);
@@ -13320,8 +13320,8 @@ void addPeriodicFace(int iTarget, int iSource,
     Msg::Info("%d - %d", sIter->first, sIter->second);
   }
 
-  GFace *target = GModel::current()->getFaceByTag(abs(iTarget));
-  GFace *source = GModel::current()->getFaceByTag(abs(iSource));
+  GFace *target = GModel::current()->getFaceByTag(std::abs(iTarget));
+  GFace *source = GModel::current()->getFaceByTag(std::abs(iSource));
   if (!target || !source) {
     Msg::Error("Could not find surface slave %d or master %d for periodic copy",
                iTarget,iSource);
@@ -13338,8 +13338,8 @@ void addPeriodicEdge(int iTarget,int iSource,
   if(GModel::current()->getGEOInternals()->getChanged())
     GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
-  GEdge *target = GModel::current()->getEdgeByTag(abs(iTarget));
-  GEdge *source = GModel::current()->getEdgeByTag(abs(iSource));
+  GEdge *target = GModel::current()->getEdgeByTag(std::abs(iTarget));
+  GEdge *source = GModel::current()->getEdgeByTag(std::abs(iSource));
   if (!target || !source)
     Msg::Error("Could not find surface %d or %d for periodic copy",
                iTarget,iSource);
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 3110544b26b40c132da6095b8d2789c6550f860f..37ea5615c910e28f6d94fb218867ebbcf9f8c725 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -3890,7 +3890,7 @@ Constraints :
             gf->meshAttributes.transfiniteArrangement = $5;
             if(corners.empty() || corners.size() == 3 || corners.size() == 4){
               for(unsigned int j = 0; j < corners.size(); j++){
-                GVertex *gv = GModel::current()->getVertexByTag(std::abs(corners[j]));
+                GVertex *gv = GModel::current()->getVertexByTag(corners[j]);
                 if(gv)
                   gf->meshAttributes.corners.push_back(gv);
                 else
@@ -3932,7 +3932,7 @@ Constraints :
             gr->meshAttributes.method = MESH_TRANSFINITE;
             if(corners.empty() || corners.size() == 6 || corners.size() == 8){
               for(unsigned int i = 0; i < corners.size(); i++){
-                GVertex *gv = GModel::current()->getVertexByTag(std::abs(corners[i]));
+                GVertex *gv = GModel::current()->getVertexByTag(corners[i]);
                 if(gv)
                   gr->meshAttributes.corners.push_back(gv);
                 else
@@ -4384,7 +4384,7 @@ Constraints :
       for(int i = 0; i < List_Nbr($3); i++){
 	double dnum;
 	List_Read($3, i, &dnum);
-	int num = (int)fabs(dnum);
+	int num = (int)dnum;
         GModel::current()->getGEOInternals()->setDegenerated(1, num);
         GEdge *ge = GModel::current()->getEdgeByTag(num);
         if(ge) ge->setTooSmall(true);
@@ -6204,8 +6204,8 @@ void addPeriodicFace(int iTarget, int iSource,
   if(GModel::current()->getGEOInternals()->getChanged())
     GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
-  GFace *target = GModel::current()->getFaceByTag(abs(iTarget));
-  GFace *source = GModel::current()->getFaceByTag(abs(iSource));
+  GFace *target = GModel::current()->getFaceByTag(std::abs(iTarget));
+  GFace *source = GModel::current()->getFaceByTag(std::abs(iSource));
   if (!target || !source) {
     Msg::Error("Could not find edge slave %d or master %d for periodic copy",
                iTarget, iSource);
@@ -6228,8 +6228,8 @@ void addPeriodicFace(int iTarget, int iSource,
     Msg::Info("%d - %d", sIter->first, sIter->second);
   }
 
-  GFace *target = GModel::current()->getFaceByTag(abs(iTarget));
-  GFace *source = GModel::current()->getFaceByTag(abs(iSource));
+  GFace *target = GModel::current()->getFaceByTag(std::abs(iTarget));
+  GFace *source = GModel::current()->getFaceByTag(std::abs(iSource));
   if (!target || !source) {
     Msg::Error("Could not find surface slave %d or master %d for periodic copy",
                iTarget,iSource);
@@ -6246,8 +6246,8 @@ void addPeriodicEdge(int iTarget,int iSource,
   if(GModel::current()->getGEOInternals()->getChanged())
     GModel::current()->getGEOInternals()->synchronize(GModel::current());
 
-  GEdge *target = GModel::current()->getEdgeByTag(abs(iTarget));
-  GEdge *source = GModel::current()->getEdgeByTag(abs(iSource));
+  GEdge *target = GModel::current()->getEdgeByTag(std::abs(iTarget));
+  GEdge *source = GModel::current()->getEdgeByTag(std::abs(iSource));
   if (!target || !source)
     Msg::Error("Could not find surface %d or %d for periodic copy",
                iTarget,iSource);