diff --git a/gpu/include/GrGLConfig_chrome.h b/gpu/include/GrGLConfig_chrome.h
index 06a74d3..1b3c1c6 100644
--- a/gpu/include/GrGLConfig_chrome.h
+++ b/gpu/include/GrGLConfig_chrome.h
@@ -6,7 +6,6 @@
 // gl2ext.h will define these extensions macros but Chrome doesn't provide
 // prototypes.
 #define GL_OES_mapbuffer                      0
-#define GL_IMG_multisampled_render_to_texture 0
 
 #define GR_GL_PLATFORM_HEADER       <GLES2/gl2.h>
 #define GR_GL_PLATFORM_HEADER_EXT   <GLES2/gl2ext.h>
diff --git a/gpu/include/GrGLDefines.h b/gpu/include/GrGLDefines.h
index e2d9106..46bd264 100644
--- a/gpu/include/GrGLDefines.h
+++ b/gpu/include/GrGLDefines.h
@@ -606,7 +606,6 @@
 #define GR_GL_DEPTH24_STENCIL8               0x88F0
 
 #define GR_GL_MAX_SAMPLES                    0x8D57
-#define GR_GL_MAX_SAMPLES_IMG                0x9135 // to be removed soon.
 
 #define GR_GL_RENDERBUFFER_WIDTH             0x8D42
 #define GR_GL_RENDERBUFFER_HEIGHT            0x8D43
diff --git a/gpu/include/GrGLInterface.h b/gpu/include/GrGLInterface.h
index b43bacc..700ce9e 100644
--- a/gpu/include/GrGLInterface.h
+++ b/gpu/include/GrGLInterface.h
@@ -178,9 +178,6 @@
     // apple's es extension
     typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLResolveMultisampleFramebufferProc)();
 
-    // IMG'e es extension
-    typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLFramebufferTexture2DMultisampleProc)(GrGLenum target, GrGLenum attachment, GrGLenum textarget, GrGLuint texture, GrGLint level, GrGLsizei samples);
-
     // Buffer mapping (extension in ES).
     typedef GrGLvoid* (GR_GL_FUNCTION_TYPE *GrGLMapBufferProc)(GrGLenum target, GrGLenum access);
     typedef GrGLboolean (GR_GL_FUNCTION_TYPE *GrGLUnmapBufferProc)(GrGLenum target);
@@ -286,9 +283,6 @@
     // apple's es extension
     GrGLResolveMultisampleFramebufferProc fResolveMultisampleFramebuffer;
 
-    // IMG'e es extension
-    GrGLFramebufferTexture2DMultisampleProc fFramebufferTexture2DMultisample;
-
     // Buffer mapping (extension in ES).
     GrGLMapBufferProc fMapBuffer;
     GrGLUnmapBufferProc fUnmapBuffer;
diff --git a/gpu/include/GrGLPlatformIncludes.h b/gpu/include/GrGLPlatformIncludes.h
index 65e5281..13ce694 100644
--- a/gpu/include/GrGLPlatformIncludes.h
+++ b/gpu/include/GrGLPlatformIncludes.h
@@ -123,7 +123,6 @@
         // builds.
         #define GL_APPLE_framebuffer_multisample        1
         #define GL_EXT_framebuffer_object               1
-        #define GL_IMG_multisampled_render_to_texture   1
         #define GL_OES_mapbuffer                        1
         #define GL_OES_mapbuffer                        1
     #elif GR_MAC_BUILD
diff --git a/gpu/src/GrGLInterface.cpp b/gpu/src/GrGLInterface.cpp
index cc2c7bf..702b057 100644
--- a/gpu/src/GrGLInterface.cpp
+++ b/gpu/src/GrGLInterface.cpp
@@ -220,13 +220,6 @@
     }
     #endif
 
-    #if GL_IMG_multisampled_render_to_texture
-    if (has_gl_extension_from_string(
-                "GL_IMG_multisampled_render_to_texture", extensionString)) {
-        GR_GL_GET_PROC_SUFFIX(FramebufferTexture2DMultisample, IMG);
-    }
-    #endif
-
     #if GL_OES_mapbuffer
     if (has_gl_extension_from_string("GL_OES_mapbuffer", extensionString)) {
         GR_GL_GET_PROC_SUFFIX(MapBuffer, OES);
diff --git a/gpu/src/GrGpuGL.cpp b/gpu/src/GrGpuGL.cpp
index e944551..1862784 100644
--- a/gpu/src/GrGpuGL.cpp
+++ b/gpu/src/GrGpuGL.cpp
@@ -230,13 +230,7 @@
 
     memset(fAASamples, 0, sizeof(fAASamples));
     fMSFBOType = kNone_MSFBO;
-    if (has_gl_extension("GL_IMG_multisampled_render_to_texture")) {
-        fMSFBOType = kIMG_MSFBO;
-        if (gPrintStartupSpew) {
-            GrPrintf("MSAA Support: IMG ES EXT.\n");
-        }
-    }
-    else if (has_gl_extension("GL_APPLE_framebuffer_multisample")) {
+    if (has_gl_extension("GL_APPLE_framebuffer_multisample")) {
         fMSFBOType = kApple_MSFBO;
         if (gPrintStartupSpew) {
             GrPrintf("MSAA Support: APPLE ES EXT.\n");
@@ -260,10 +254,7 @@
 
     if (kNone_MSFBO != fMSFBOType) {
         GrGLint maxSamples;
-        GrGLenum maxSampleGetter = (kIMG_MSFBO == fMSFBOType) ?
-                                                            GR_GL_MAX_SAMPLES_IMG :
-                                                            GR_GL_MAX_SAMPLES;
-        GR_GL_GetIntegerv(maxSampleGetter, &maxSamples);
+        GR_GL_GetIntegerv(GR_GL_MAX_SAMPLES, &maxSamples);
         if (maxSamples > 1 ) {
             fAASamples[kNone_AALevel] = 0;
             fAASamples[kLow_AALevel] = GrMax(2,
@@ -830,11 +821,9 @@
         GR_GL(GenFramebuffers(1, &rtIDs.fTexFBOID));
         GrAssert(rtIDs.fTexFBOID);
 
-        // If we are using multisampling and any extension other than the IMG
-        // one we will create two FBOs. We render to one and then resolve to
-        // the texture bound to the other. The IMG extension does an implicit
-        // resolve.
-        if (samples > 1 && kIMG_MSFBO != fMSFBOType && kNone_MSFBO != fMSFBOType) {
+        // If we are using multisampling and we will create two FBOS We render 
+        // to one and then resolve to the texture bound to the other.
+        if (samples > 1 && kNone_MSFBO != fMSFBOType) {
             GR_GL(GenFramebuffers(1, &rtIDs.fRTFBOID));
             GrAssert(0 != rtIDs.fRTFBOID);
             GR_GL(GenRenderbuffers(1, &rtIDs.fMSColorRenderbufferID));
@@ -904,20 +893,10 @@
 #if GR_COLLECT_STATS
             ++fStats.fRenderTargetChngCnt;
 #endif
-            if (kIMG_MSFBO == fMSFBOType && samples > 1) {
-                GR_GL(FramebufferTexture2DMultisample(GR_GL_FRAMEBUFFER,
-                                                      GR_GL_COLOR_ATTACHMENT0,
-                                                      GR_GL_TEXTURE_2D,
-                                                      glDesc.fTextureID,
-                                                      0,
-                                                      samples));
-
-            } else {
-                GR_GL(FramebufferTexture2D(GR_GL_FRAMEBUFFER,
-                                           GR_GL_COLOR_ATTACHMENT0,
-                                           GR_GL_TEXTURE_2D,
-                                           glDesc.fTextureID, 0));
-            }
+            GR_GL(FramebufferTexture2D(GR_GL_FRAMEBUFFER,
+                                        GR_GL_COLOR_ATTACHMENT0,
+                                        GR_GL_TEXTURE_2D,
+                                        glDesc.fTextureID, 0));
             if (rtIDs.fRTFBOID != rtIDs.fTexFBOID) {
                 GrGLenum status = GR_GL(CheckFramebufferStatus(GR_GL_FRAMEBUFFER));
                 if (status != GR_GL_FRAMEBUFFER_COMPLETE) {
diff --git a/gpu/src/GrGpuGL.h b/gpu/src/GrGpuGL.h
index 3e7d79d..0134407 100644
--- a/gpu/src/GrGpuGL.h
+++ b/gpu/src/GrGpuGL.h
@@ -167,8 +167,7 @@
     enum {
         kNone_MSFBO = 0,
         kDesktop_MSFBO,
-        kApple_MSFBO,
-        kIMG_MSFBO
+        kApple_MSFBO
     } fMSFBOType;
 
     // Do we have stencil wrap ops.
