diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index b40279e..bcd174a 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -361,7 +361,8 @@
             }
 
             GLenum internalformat = colorbuffer->getInternalFormat();
-            const TextureCaps &formatCaps = mRenderer->getCaps().textureCaps.get(internalformat);
+            // TODO(geofflang): use context's texture caps
+            const TextureCaps &formatCaps = mRenderer->getRendererTextureCaps().get(internalformat);
             if (colorbuffer->isTexture())
             {
                 if (!formatCaps.colorRendering)
@@ -440,13 +441,15 @@
         }
 
         GLenum internalformat = mDepthbuffer->getInternalFormat();
-        const TextureCaps &formatCaps = mRenderer->getCaps().textureCaps.get(internalformat);
+        // TODO(geofflang): use context's texture caps
+        const TextureCaps &formatCaps = mRenderer->getRendererTextureCaps().get(internalformat);
         if (mDepthbuffer->isTexture())
         {
             GLenum internalformat = mDepthbuffer->getInternalFormat();
 
             // depth texture attachments require OES/ANGLE_depth_texture
-            if (!mRenderer->getCaps().extensions.depthTextures)
+            // TODO(geofflang): use context's extensions
+            if (!mRenderer->getRendererExtensions().depthTextures)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
             }
@@ -494,14 +497,16 @@
         }
 
         GLenum internalformat = mStencilbuffer->getInternalFormat();
-        const TextureCaps &formatCaps = mRenderer->getCaps().textureCaps.get(internalformat);
+        // TODO(geofflang): use context's texture caps
+        const TextureCaps &formatCaps = mRenderer->getRendererTextureCaps().get(internalformat);
         if (mStencilbuffer->isTexture())
         {
             GLenum internalformat = mStencilbuffer->getInternalFormat();
 
             // texture stencil attachments come along as part
             // of OES_packed_depth_stencil + OES/ANGLE_depth_texture
-            if (!mRenderer->getCaps().extensions.depthTextures)
+            // TODO(geofflang): use context's extensions
+            if (!mRenderer->getRendererExtensions().depthTextures)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
             }
