diff --git a/include/views/SkOSWindow_Mac.h b/include/views/SkOSWindow_Mac.h
index 3a26d5a..232a202 100644
--- a/include/views/SkOSWindow_Mac.h
+++ b/include/views/SkOSWindow_Mac.h
@@ -36,7 +36,7 @@
     void   doPaint(void* ctx);
 
 
-    bool attachGL(const SkBitmap* offscreen);
+    bool attachGL();
     void detachGL();
     void presentGL();
 
diff --git a/include/views/SkOSWindow_Win.h b/include/views/SkOSWindow_Win.h
index 09f0c5c..4b3e916 100644
--- a/include/views/SkOSWindow_Win.h
+++ b/include/views/SkOSWindow_Win.h
@@ -30,7 +30,7 @@
 
     static bool PostEvent(SkEvent* evt, SkEventSinkID, SkMSec delay);
     
-    bool attachGL(const SkBitmap* offscreen);
+    bool attachGL();
     void detachGL();
     void presentGL();
 
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 5865417..3fe1f4e 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -21,10 +21,6 @@
 #define ANIMATING_EVENTTYPE "nextSample"
 #define ANIMATING_DELAY     750
 
-#if !defined(SK_BUILD_FOR_WIN32)
-//#define USE_OFFSCREEN
-#endif
-
 #ifdef SK_SUPPORT_GL
     #include "GrGLConfig.h"
 #endif
@@ -208,27 +204,20 @@
 bool SampleWindow::make3DReady() {
 
 #if defined(SK_SUPPORT_GL)
-    #if defined(USE_OFFSCREEN)
-        // first clear the raster bitmap, so we don't see any leftover bits
-        bitmap.eraseColor(0);
-        // now setup our glcanvas
-        attachGL(&bitmap);
-    #else
-        attachGL(NULL);
-    #endif
+    if (attachGL()) {
+        if (NULL == fGrContext) {
+        #if defined(SK_USE_SHADERS)
+            fGrContext = GrContext::Create(GrGpu::kOpenGL_Shaders_Engine, NULL);
+        #else
+            fGrContext = GrContext::Create(GrGpu::kOpenGL_Fixed_Engine, NULL);
+        #endif
+        }
 
-    if (NULL == fGrContext) {
-    #if defined(SK_USE_SHADERS)
-        fGrContext = GrContext::Create(GrGpu::kOpenGL_Shaders_Engine, NULL);
-    #else
-        fGrContext = GrContext::Create(GrGpu::kOpenGL_Fixed_Engine, NULL);
-    #endif
-    }
-
-    if (NULL != fGrContext) {
-        return true;
-    } else {
-        detachGL();
+        if (NULL != fGrContext) {
+            return true;
+        } else {
+            detachGL();
+        }
     }
 #endif
     SkDebugf("Failed to setup 3D");
@@ -485,9 +474,6 @@
             delete fGpuCanvas;
             fGpuCanvas = NULL;
             presentGL();
-    #ifdef USE_OFFSCREEN
-            reverseRedAndBlue(orig->getDevice()->accessBitmap(true));
-    #endif
             break;
 #endif
     }
diff --git a/src/utils/mac/SkOSWindow_Mac.cpp b/src/utils/mac/SkOSWindow_Mac.cpp
index 05f97a7..39b7106 100644
--- a/src/utils/mac/SkOSWindow_Mac.cpp
+++ b/src/utils/mac/SkOSWindow_Mac.cpp
@@ -452,7 +452,7 @@
 	}
 }
 
-AGLContext create_gl(WindowRef wref, bool offscreen)
+AGLContext create_gl(WindowRef wref)
 {
     GLint major, minor;
     AGLContext ctx;
@@ -466,8 +466,8 @@
         AGL_SAMPLE_BUFFERS_ARB, 1,
 		AGL_MULTISAMPLE,
 		AGL_SAMPLES_ARB, 8,
-		(offscreen ? AGL_OFFSCREEN : AGL_ACCELERATED),
-        (offscreen ? AGL_NONE : AGL_DOUBLEBUFFER),
+		AGL_ACCELERATED,
+        AGL_DOUBLEBUFFER,
         AGL_NONE
     };
     AGLPixelFormat format = aglChoosePixelFormat(NULL, 0, pixelAttrs);
@@ -483,10 +483,10 @@
     return ctx;
 }
 
-bool SkOSWindow::attachGL(const SkBitmap* offscreen)
+bool SkOSWindow::attachGL()
 {
     if (NULL == fAGLCtx) {
-        fAGLCtx = create_gl((WindowRef)fHWND, NULL != offscreen);
+        fAGLCtx = create_gl((WindowRef)fHWND);
         if (NULL == fAGLCtx) {
             return false;
         }
@@ -496,24 +496,14 @@
 
     int width, height;
 
-    if (offscreen) {
-        success = aglSetOffScreen((AGLContext)fAGLCtx,
-                                    offscreen->width(),
-                                    offscreen->height(),
-                                    offscreen->rowBytes(),
-                                    offscreen->getPixels());
-        width = offscreen->width();
-        height = offscreen->height();
-    } else {
-        success = aglSetWindowRef((AGLContext)fAGLCtx, (WindowRef)fHWND);
-        width = this->width();
-        height = this->height();
-    }
+    success = aglSetWindowRef((AGLContext)fAGLCtx, (WindowRef)fHWND);
+    width = this->width();
+    height = this->height();
 
     GLenum err = aglGetError();
     if (err) {
-        SkDebugf("---- setoffscreen %d %d %s [%d %d]\n", success, err,
-                 aglErrorString(err), offscreen->width(), offscreen->height());
+        SkDebugf("---- aglSetWindowRef %d %d %s [%d %d]\n", success, err,
+                 aglErrorString(err), width, height);
     }
 
     if (success) {
diff --git a/src/utils/win/SkOSWindow_Win.cpp b/src/utils/win/SkOSWindow_Win.cpp
index d10f580..328f7ab 100644
--- a/src/utils/win/SkOSWindow_Win.cpp
+++ b/src/utils/win/SkOSWindow_Win.cpp
@@ -433,10 +433,7 @@
     return glrc;
 }
 
-bool SkOSWindow::attachGL(const SkBitmap* offscreen) {
-    if (offscreen) {
-        printf("windows doesn't support rendering to SkBitmap");
-    }
+bool SkOSWindow::attachGL() {
     if (NULL == fHGLRC) {
         fHGLRC = create_gl((HWND)fHWND);
         glClearStencil(0);
