diff --git a/src/libRender/RadiumNBR/NodeBasedRenderer.cpp b/src/libRender/RadiumNBR/NodeBasedRenderer.cpp
index 4791790f5596add3bccdd9fead56ef62c80a5e58..fd28a8a5f798966be57376ff1eeec24609144a31 100644
--- a/src/libRender/RadiumNBR/NodeBasedRenderer.cpp
+++ b/src/libRender/RadiumNBR/NodeBasedRenderer.cpp
@@ -241,16 +241,20 @@ void NodeBasedRenderer::initPasses() {
     m_zPrePass->activate();
     m_renderPasses.emplace_back( m_aoPass );
     m_aoPass->activate();
+
     m_renderPasses.emplace_back( m_emissivityPass );
     m_emissivityPass->activate();
+
     m_renderPasses.emplace_back( m_envlightPass );
     m_envlightPass->activate();
+
     m_renderPasses.emplace_back( m_locallightPass );
     m_locallightPass->activate();
     m_renderPasses.emplace_back( m_transparencyPass );
     m_transparencyPass->activate();
     m_renderPasses.emplace_back( m_volumelightPass );
     m_volumelightPass->activate();
+
     m_renderPasses.emplace_back( m_wireframePass );
 
     // Add intermediate textures to the texture explorer
@@ -524,7 +528,8 @@ void NodeBasedRenderer::setEnvMap( const std::string& files ) {
         auto e = std::make_shared<EnvMap>( files, t, true );
         m_clearPass->setEnvMap( e );
         m_envlightPass->setEnvMap( e );
-        m_envlightPass->activate();
+        // activate the envmap pass only if wireframe is inactive ?
+        if ( !m_wireframePass->isActive() ) { m_envlightPass->activate(); }
         m_volumelightPass->setEnvMap( e );
         m_hasEnvMap = true;
     }
diff --git a/src/libRender/RadiumNBR/Passes/GeomPrepass.cpp b/src/libRender/RadiumNBR/Passes/GeomPrepass.cpp
index 1c8a7c0f8df3a0c98876c7ac83506efb4e3235b9..6ac1716c685cd3716a75787456a88c6e1f433f0c 100644
--- a/src/libRender/RadiumNBR/Passes/GeomPrepass.cpp
+++ b/src/libRender/RadiumNBR/Passes/GeomPrepass.cpp
@@ -111,11 +111,12 @@ void GeomPrePass::execute( const Ra::Engine::Data::ViewingParameters& viewParams
 
     GL_ASSERT( glDepthFunc( GL_LESS ) );
     GL_ASSERT( glDisable( GL_BLEND ) );
-
+    glPolygonOffset( 1.1f, 1.f );
+    glEnable( GL_POLYGON_OFFSET_FILL );
     for ( const auto& ro : *m_objectsToRender )
     { ro->render( m_passParams, viewParams, passIndex() ); }
 
-    // Beware of the state left by the pass
+    // Beware of the state left by the pass : Polygon offset must be enable after this for rendering coherency
 }
 
 bool GeomPrePass::buildRenderTechnique( const Ra::Engine::Rendering::RenderObject* ro,
diff --git a/src/libRender/RadiumNBR/Passes/TransparencyPass.cpp b/src/libRender/RadiumNBR/Passes/TransparencyPass.cpp
index 7edcc0fa39cfeeef05b9e4fbeb29590c2cf0f4c6..d28871cedae97787df8ba84e537e4fe945a148da 100644
--- a/src/libRender/RadiumNBR/Passes/TransparencyPass.cpp
+++ b/src/libRender/RadiumNBR/Passes/TransparencyPass.cpp
@@ -152,7 +152,7 @@ void TransparencyPass::execute( const Ra::Engine::Data::ViewingParameters& viewP
     GL_ASSERT( glClearBufferfv( GL_COLOR, 0, clearZeros.data() ) );
     GL_ASSERT( glClearBufferfv( GL_COLOR, 1, clearOnes.data() ) );
     GL_ASSERT( glDepthMask( GL_FALSE ) );
-    GL_ASSERT( glDepthFunc( GL_LESS ) );
+    GL_ASSERT( glDepthFunc( GL_LEQUAL ) );
     GL_ASSERT( glEnable( GL_DEPTH_TEST ) );
 
     GL_ASSERT( glEnable( GL_BLEND ) );
diff --git a/src/libRender/RadiumNBR/Passes/WireframePass.cpp b/src/libRender/RadiumNBR/Passes/WireframePass.cpp
index 051e768be8580c6f77ce3f10920b9ae99d0cbf4a..ce32ad5c9928bd4f8aa56f7731b8d65b88ebb8f4 100644
--- a/src/libRender/RadiumNBR/Passes/WireframePass.cpp
+++ b/src/libRender/RadiumNBR/Passes/WireframePass.cpp
@@ -168,21 +168,19 @@ void WireframePass::execute( const Ra::Engine::Data::ViewingParameters& viewPara
     GL_ASSERT( glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE ) );
 
     GL_ASSERT( glEnable( GL_DEPTH_TEST ) );
-    GL_ASSERT( glDepthFunc( GL_LEQUAL ) );
+    GL_ASSERT( glDepthFunc( GL_LESS ) );
     GL_ASSERT( glEnable( GL_BLEND ) );
 #ifdef ADVANCED_WIREFRAME_SHADER
     glBlendEquationSeparate( GL_FUNC_ADD, GL_FUNC_ADD );
     glBlendFuncSeparate( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO );
-    glPolygonOffset( -4.f, -2.f );
-    glEnable( GL_POLYGON_OFFSET_FILL );
-
+    // To prevent z-fighting, remove polygon offset
+    glDisable( GL_POLYGON_OFFSET_FILL );
 #else
-    GL_ASSERT( glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) );
+    glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
     glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
     glEnable( GL_LINE_SMOOTH );
     glLineWidth( 1.f );
-    glPolygonOffset( -1.1f, -0.1f );
-    glEnable( GL_POLYGON_OFFSET_LINE );
+    glDisable( GL_POLYGON_OFFSET_LINE );
 #endif
 
     for ( const auto& ro : *m_objectsToRender )
@@ -209,10 +207,12 @@ void WireframePass::execute( const Ra::Engine::Data::ViewingParameters& viewPara
 #endif
     }
 #ifdef ADVANCED_WIREFRAME_SHADER
-    glDisable( GL_POLYGON_OFFSET_FILL );
+    // need to maintain global state invariant
+    glEnable( GL_POLYGON_OFFSET_FILL );
 #else
     glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
-    glDisable( GL_POLYGON_OFFSET_LINE );
+    // do we need to enable this ? it is not part of the invariant ...
+    // glEnable( GL_POLYGON_OFFSET_LINE );
 #endif
     GL_ASSERT( glDisable( GL_BLEND ) );
 }
diff --git a/src/libRender/RadiumNBR/Passes/WireframePass.hpp b/src/libRender/RadiumNBR/Passes/WireframePass.hpp
index f2f8f3eba4e6f13f31af3aa38232aa6865bcf776..df0ca9b46e03c563e606f405ac9eee7a7a45b714 100644
--- a/src/libRender/RadiumNBR/Passes/WireframePass.hpp
+++ b/src/libRender/RadiumNBR/Passes/WireframePass.hpp
@@ -3,8 +3,9 @@
 
 #include <Core/Utils/Color.hpp>
 
-//#define ADVANCED_WIREFRAME
-//#define ADVANCED_WIREFRAME_SHADER
+// This is the default. The two way of rendering wireframe is kept for illustration only
+#define ADVANCED_WIREFRAME
+#define ADVANCED_WIREFRAME_SHADER
 #ifdef ADVANCED_WIREFRAME
 #include <Engine/Data/DisplayableObject.hpp>
 #endif