diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index 77c07b6bb3d9a8c7cf95be6d1f9d8d6f9c5de9bd..d7b499185f6f022bde22525e188dddcfcd27fa81 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -108,7 +108,7 @@ void OCC_Internals::addShapeToLists(TopoDS_Shape _shape)
             if(fmap.FindIndex(face) < 1){
               fmap.Add(face);
 
-              for(exp3.Init(exp2.Current(), TopAbs_WIRE); exp3.More(); exp3.Next()){
+              for(exp3.Init(exp2.Current().Oriented(TopAbs_FORWARD), TopAbs_WIRE); exp3.More(); exp3.Next()){
                 TopoDS_Wire wire = TopoDS::Wire(exp3.Current());
                 if(wmap.FindIndex(wire) < 1){
                   wmap.Add(wire);
diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 471c1b166de44b817bea772a7ac37a75b28311ef..69bf0b272d2e085ba6c06ebb164455c70de6284a 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -42,7 +42,7 @@
 #endif
 
 OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num)
-  : GFace(m, num), s(_s)
+  : GFace(m, num), s(TopoDS::Face(_s.Oriented(TopAbs_FORWARD)))
 {
   setup();
   model()->getOCCInternals()->bind(s, num);
diff --git a/Geo/OCCRegion.cpp b/Geo/OCCRegion.cpp
index 44644cd995880557b9056b8296d6b9cb369c90fb..34a20d124a260bfd93a6c082548a403d4575d0c8 100644
--- a/Geo/OCCRegion.cpp
+++ b/Geo/OCCRegion.cpp
@@ -36,14 +36,20 @@ void OCCRegion::setup()
     for(exp3.Init(shell, TopAbs_FACE); exp3.More(); exp3.Next()){
       TopoDS_Face face = TopoDS::Face(exp3.Current());
       GFace *f = model()->getOCCInternals()->getOCCFaceByNativePtr(model(),face);
-      if(f){
+      if(!f){
+        Msg::Error("Unknown face in region %d", tag());
+      }
+      else if (face.Orientation() == TopAbs_INTERNAL){
+        Msg::Info("Adding embedded face %d", f->tag());
+        embedded_faces.push_back(f);
+      }
+      else{
         l_faces.push_back(f);
         f->addRegion(this);
       }
-      else
-        Msg::Error("Unknown face in region %d", tag());
     }
   }
+
   Msg::Debug("OCC Region %d with %d faces", tag(), l_faces.size());
 }