diff --git a/lambdacube-gl.cabal b/lambdacube-gl.cabal
--- a/lambdacube-gl.cabal
+++ b/lambdacube-gl.cabal
@@ -1,5 +1,5 @@
 Name:           lambdacube-gl
-Version:        0.2.0
+Version:        0.2.1
 Cabal-Version:  >= 1.10
 Build-Type:     Simple
 License:        BSD3
@@ -30,7 +30,7 @@
   default-language:  Haskell2010
   hs-source-dirs:    src/lib
   Build-Depends: 
-        base >=4.6 && <5,
+        base >=4.7 && <5,
         binary >=0.7 && <0.8,
         bytestring >=0.10 && <0.11,
         containers >=0.5 && <0.6,
@@ -41,7 +41,7 @@
         bytestring-trie >=0.2 && <0.3,
         OpenGLRaw >=1.5 && <1.6,
         bitmap >= 0.0.2 && <0.0.3,
-        language-glsl >=0.1 && <0.2,
+        language-glsl,
 
         lambdacube-core == 0.2.0,
         lambdacube-edsl == 0.2.0
diff --git a/src/lib/LambdaCube/GL.hs b/src/lib/LambdaCube/GL.hs
--- a/src/lib/LambdaCube/GL.hs
+++ b/src/lib/LambdaCube/GL.hs
@@ -48,6 +48,7 @@
 
     Renderer,
     compileRenderer,
+    compileRendererFromCore,
     slotUniform,
     slotStream,
     uniformSetter,
@@ -137,10 +138,12 @@
 import System.IO as IO
 
 compileRenderer :: H.GPOutput H.SingleOutput -> IO Renderer
-compileRenderer l = do
+compileRenderer l = compileRendererFromCore $ convertGPOutput l
 
+compileRendererFromCore :: U.N -> IO Renderer
+compileRendererFromCore l = do
     let root =  U.toExp dag l'
-        (l', dag) = runState (U.unN $ convertGPOutput l) U.emptyDAG
+        (l', dag) = runState (U.unN l) U.emptyDAG
         U.DAG (BiMap _ em) tm _ _ _ = dag
         unis = U.mkExpUni dag
         gunis = U.mkGPUni dag
diff --git a/src/lib/LambdaCube/GL/Compile.hs b/src/lib/LambdaCube/GL/Compile.hs
--- a/src/lib/LambdaCube/GL/Compile.hs
+++ b/src/lib/LambdaCube/GL/Compile.hs
@@ -219,8 +219,6 @@
                 glDepthMask (cvtBool dm)
         cvtC 0 xs
     cvt xs = do
-        glDepthMask (cvtBool True) -- ??? wtf probably gl bug
-
         glDisable gl_DEPTH_TEST
         glDisable gl_STENCIL_TEST
         cvtC 0 xs
@@ -400,6 +398,7 @@
         cvtC 0 xs
     cvt (DepthImage sh d : xs) = do
         let --renderGL3   = with d $ \pd -> glClearBufferfv gl_DEPTH 0 $ castPtr pd
+        glDepthMask 1
         glClearDepth $ realToFrac d
         glClear $ fromIntegral gl_DEPTH_BUFFER_BIT
         --print "     * glClear gl_DEPTH_BUFFER_BIT"
