diff --git a/Geo/MQuadrangle.cpp b/Geo/MQuadrangle.cpp
index 9aa42dea1e7ce87597f4ee1eca916bfe7a980910..fa7f30395be0b5eb7ec2e83d7d6c57d82da82a79 100644
--- a/Geo/MQuadrangle.cpp
+++ b/Geo/MQuadrangle.cpp
@@ -331,7 +331,7 @@ double MQuadrangle::getInnerRadius()
 
 void MQuadrangle::reorient(int rot, bool swap) {
   MVertex* tmp[4];
-  if (swap) for (int i=0;i<4;i++) tmp[i] = _v[(8-i-rot)%4];
+  if (swap) for (int i=0;i<4;i++) tmp[i] = _v[(4-i+rot)%4];
   else      for (int i=0;i<4;i++) tmp[i] = _v[(4+i-rot)%4];
   std::memcpy(_v,tmp,4*sizeof(MVertex*));
 }
@@ -342,7 +342,7 @@ void MQuadrangle8::reorient(int rot, bool swap) {
   
   MQuadrangle::reorient(rot,swap);
   MVertex* tmp[4];
-  if (swap) for (int i=0;i<4;i++) tmp[i] = _vs[(8-i-rot)%4];
+  if (swap) for (int i=0;i<4;i++) tmp[i] = _vs[(7-i+rot)%4];
   else      for (int i=0;i<4;i++) tmp[i] = _vs[(4+i-rot)%4];
   std::memcpy(_vs,tmp,4*sizeof(MVertex*));
 }
diff --git a/Geo/MTriangle.cpp b/Geo/MTriangle.cpp
index ec79b528582b09179f6b0b307255d15feefa2ff6..c3c88554d4ebcd0a1b99ce693ae133aee17f6ec3 100644
--- a/Geo/MTriangle.cpp
+++ b/Geo/MTriangle.cpp
@@ -269,19 +269,23 @@ void MTriangle::reorient(int rot,bool swap) {
   
   MVertex* tmp[3];
   std::memcpy(tmp,_v,3*sizeof(MVertex*));
-  if (swap) for (int i=0;i<3;i++) _v[i] = tmp[(6-i-rot)%3];
+  if (swap) for (int i=0;i<3;i++) _v[i] = tmp[(3-i+rot)%3];
   else      for (int i=0;i<3;i++) _v[i] = tmp[(3+i-rot)%3];
 }
 
-void MTriangle6::reorient(int rot, bool swap) {
+#include "HighOrder.h"
 
+void MTriangle6::reorient(int rot, bool swap) {
+  
+  Msg::Info("Reorienting triangle 6 with rot %d and swap %d",
+            rot,swap ? 1:0);
   if (rot == 0 && !swap) return;
 
   MTriangle::reorient(rot,swap);
   MVertex* tmp[3];
   std::memcpy(tmp,_vs,3*sizeof(MVertex*));
-  if (swap) for (int i=0;i<3;i++) _vs[i] = tmp[(7-i-rot)%3];
-  else      for (int i=0;i<3;i++) _vs[i] = tmp[(3+i-rot)%3];
+  if (swap) for (int i=0;i<3;i++) _vs[i] = tmp[(5+rot-i)%3];
+  else      for (int i=0;i<3;i++) _vs[i] = tmp[(3-rot+i)%3];
 }
 
 void MTriangleN::reorient(int rot, bool swap) {