diff --git a/Geo/MQuadrangle.cpp b/Geo/MQuadrangle.cpp
index fa7f30395be0b5eb7ec2e83d7d6c57d82da82a79..7a354659b7119fb5049c86378a3ec2ca822e83e7 100644
--- a/Geo/MQuadrangle.cpp
+++ b/Geo/MQuadrangle.cpp
@@ -353,7 +353,7 @@ void MQuadrangle9::reorient(int rot, bool swap) {
   
   MQuadrangle::reorient(rot,swap);
   MVertex* tmp[4];
-  if (swap) for (int i=0;i<4;i++) tmp[i] = _vs[(9-i-rot)%4]; // edge swapped
+  if (swap) for (int i=0;i<4;i++) tmp[i] = _vs[(7-i+rot)%4]; // edge swapped
   else      for (int i=0;i<4;i++) tmp[i] = _vs[(4+i-rot)%4];
   std::memcpy(_vs,tmp,4*sizeof(MVertex*));
 }
@@ -371,7 +371,7 @@ void MQuadrangleN::reorient(int rot, bool swap) {
 
   if (swap) {
     for (int iEdge=0;iEdge<4;iEdge++) {
-      int edgeIdx = ((9-iEdge-rot)%4)*nbEdgePts;
+      int edgeIdx = ((7-iEdge+rot)%4)*nbEdgePts;
       for (int i=nbEdgePts-1;i>=0;i--) tmp.push_back(_vs[edgeIdx+i]);
     }
   }
@@ -387,11 +387,11 @@ void MQuadrangleN::reorient(int rot, bool swap) {
   if (_vs.size() >= idx) {
     nbEdgePts = order - 3;
     if (order > 2) {
-      if (swap) for (int i=0;i<4;i++) tmp.push_back(_vs[idx + (8-i-rot)%4]);
+      if (swap) for (int i=0;i<4;i++) tmp.push_back(_vs[idx + (4-i+rot)%4]);
       else      for (int i=0;i<4;i++) tmp.push_back(_vs[idx + (4+i-rot)%4]);
       idx += 4;
       if (order > 3) {
-        if (swap) for (int i=0;i<4;i++) tmp.push_back(_vs[idx + (9-i-rot)%4]);
+        if (swap) for (int i=0;i<4;i++) tmp.push_back(_vs[idx + (7-i+rot)%4]);
         else      for (int i=0;i<4;i++) tmp.push_back(_vs[idx + (4+i-rot)%4]);
         idx += 4;
         if (order > 4) Msg::Error("Reorientation of quad not supported above order 4");