anchor.diff:          // fin
           (texture, framebuffer)
   
  +    /// Create a full screen quad.
  +    static member createFullScreenQuad () =
  +
  +        // create vertices
  +        let vertexData =
  +            [|-1.0f; -1.0f;
  +              +1.0f; -1.0f;
  +              +1.0f; +1.0f;
  +              -1.0f; +1.0f|]
  +
  +        // create vertex buffer
  +        let vertexBuffers = [|0u|]
  +        Gl.GenBuffers (1, vertexBuffers)
  +        let vertexBuffer = vertexBuffers.[0]
  +        Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, vertexBuffer)
  +        let vertexDataSize = IntPtr (2 * 4 * sizeof<single>)
  +        let vertexDataPtr = GCHandle.Alloc (vertexData, GCHandleType.Pinned)
  +        Gl.BufferData (Gl.BufferTarget.ArrayBuffer, vertexDataSize, vertexDataPtr.AddrOfPinnedObject(), Gl.BufferUsageHint.StaticDraw)
  +
  +        // create index buffer
  +        let indexData = [|0u; 1u; 2u; 3u|]
  +        let indexBuffers = [|0u|]
  +        Gl.GenBuffers (1, indexBuffers)
  +        let indexBuffer = indexBuffers.[0]
  +        Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, indexBuffer)
  +        let indexDataSize = IntPtr (4 * sizeof<uint>)
  +        let indexDataPtr = GCHandle.Alloc (indexData, GCHandleType.Pinned)
  +        Gl.BufferData (Gl.BufferTarget.ArrayBuffer, indexDataSize, indexDataPtr.AddrOfPinnedObject(), Gl.BufferUsageHint.StaticDraw)
  +
  +        // fin
  +        (vertexBuffer, indexBuffer)
  +
       /// Make a Renderer.
       static member make (window : nativeint) (renderContext : nativeint) =
           
           let glContext = SDL.SDL_GL_CreateContext (window)
  +
  +        Gl.Viewport (0, 0, Constants.Render.ResolutionX, Constants.Render.ResolutionY)
   
           let (textureFramebufferTexture, _) = SdlRenderer.createTextureFramebuffer ()
   
  
positive.code:             Gl.BindFramebuffer (Gl.FramebufferTarget.Framebuffer, 0u)
              Gl.UseProgram samplerShaderProgram
              Gl.EnableVertexAttribArray sVertexPos2DAttrib
              Gl.BindBuffer (Gl.BufferTarget.ArrayBuffer, vertexBuffer)
              Gl.VertexAttribPointer (sVertexPos2DAttrib, 2, Gl.VertexAttribPointerType.Float, false, 2 * sizeof<single>, nativeint 0)
              Gl.BindBuffer (Gl.BufferTarget.ElementArrayBuffer, indexBuffer)
              Gl.Uniform1i (sTexUniform, 0) // set attrib to texture slot 0
              Gl.ActiveTexture 0 // make texture slot 0 active
              Gl.BindTexture (Gl.TextureTarget.Texture2D, textureFramebufferTexture) // bind texture to slot 0
  
negative.code:              "void main()"
               "{"
               "  gl_Position = vec4( pos.x, pos.y, 0, 1 );"
               "  texCoord = vec2((pos.x + 1) / 2, (pos.y + 1) / 2);"
               "}"] |> String.join "\n"
          let samplerFragmentShaderStr =
              ["#version 410"
  