diff --git a/mojo/gpu/BUILD.gn b/mojo/gpu/BUILD.gn
index 973168d..070c330 100644
--- a/mojo/gpu/BUILD.gn
+++ b/mojo/gpu/BUILD.gn
@@ -6,6 +6,8 @@
   sources = [
     "gl_context.cc",
     "gl_context.h",
+    "gl_context_owner.cc",
+    "gl_context_owner.h",
     "gl_texture.cc",
     "gl_texture.h",
   ]
diff --git a/mojo/gpu/gl_context_owner.cc b/mojo/gpu/gl_context_owner.cc
new file mode 100644
index 0000000..81d7d33
--- /dev/null
+++ b/mojo/gpu/gl_context_owner.cc
@@ -0,0 +1,19 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "mojo/gpu/gl_context_owner.h"
+
+#include "mojo/gpu/gl_context.h"
+
+namespace mojo {
+
+GLContextOwner::GLContextOwner(mojo::Shell* shell)
+    : context_(mojo::GLContext::Create(shell)) {
+}
+
+GLContextOwner::~GLContextOwner() {
+  context_->Destroy();
+}
+
+}  // namespace mojo
diff --git a/mojo/gpu/gl_context_owner.h b/mojo/gpu/gl_context_owner.h
new file mode 100644
index 0000000..872729a
--- /dev/null
+++ b/mojo/gpu/gl_context_owner.h
@@ -0,0 +1,29 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MOJO_GPU_GL_CONTEXT_OWNER_H_
+#define MOJO_GPU_GL_CONTEXT_OWNER_H_
+
+#include "base/memory/weak_ptr.h"
+
+namespace mojo {
+class GLContext;
+class Shell;
+
+class GLContextOwner {
+ public:
+  explicit GLContextOwner(mojo::Shell* shell);
+  ~GLContextOwner();
+
+  const base::WeakPtr<mojo::GLContext>& context() const { return context_; }
+
+ private:
+  base::WeakPtr<mojo::GLContext> context_;
+
+  DISALLOW_COPY_AND_ASSIGN(GLContextOwner);
+};
+
+}  // namespace mojo
+
+#endif  // MOJO_GPU_GL_CONTEXT_OWNER_H_
diff --git a/sky/compositor/layer_host.cc b/sky/compositor/layer_host.cc
index a4d5a08..ef6b543 100644
--- a/sky/compositor/layer_host.cc
+++ b/sky/compositor/layer_host.cc
@@ -19,9 +19,9 @@
       state_(kWaitingForSurfaceService),
       frame_requested_(false),
       surface_holder_(this, client->GetShell()),
-      gl_context_(mojo::GLContext::Create(client->GetShell())),
-      ganesh_context_(gl_context_),
-      resource_manager_(gl_context_),
+      gl_context_owner_(client->GetShell()),
+      ganesh_context_(gl_context()),
+      resource_manager_(gl_context()),
       weak_factory_(this) {
 }
 
diff --git a/sky/compositor/layer_host.h b/sky/compositor/layer_host.h
index 2f8ccdb..0b9616c 100644
--- a/sky/compositor/layer_host.h
+++ b/sky/compositor/layer_host.h
@@ -8,6 +8,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
+#include "mojo/gpu/gl_context_owner.h"
 #include "mojo/skia/ganesh_context.h"
 #include "sky/compositor/layer_host_client.h"
 #include "sky/compositor/resource_manager.h"
@@ -26,7 +27,7 @@
   LayerHostClient* client() const { return client_; }
 
   const base::WeakPtr<mojo::GLContext>& gl_context() const {
-    return gl_context_;
+    return gl_context_owner_.context();
   }
 
   mojo::GaneshContext* ganesh_context() const {
@@ -63,7 +64,7 @@
   State state_;
   bool frame_requested_;
   SurfaceHolder surface_holder_;
-  base::WeakPtr<mojo::GLContext> gl_context_;
+  mojo::GLContextOwner gl_context_owner_;
   mojo::GaneshContext ganesh_context_;
   ResourceManager resource_manager_;
   scoped_refptr<Layer> root_layer_;
diff --git a/sky/compositor/resource_manager.cc b/sky/compositor/resource_manager.cc
index 5fee461..fe6dc0e 100644
--- a/sky/compositor/resource_manager.cc
+++ b/sky/compositor/resource_manager.cc
@@ -9,6 +9,7 @@
 #endif
 
 #include "base/logging.h"
+#include "base/stl_util.h"
 #include "gpu/GLES2/gl2chromium.h"
 #include "gpu/GLES2/gl2extchromium.h"
 #include "mojo/converters/geometry/geometry_type_converters.h"
@@ -24,6 +25,8 @@
 }
 
 ResourceManager::~ResourceManager() {
+  STLDeleteContainerPairSecondPointers(resource_to_texture_map_.begin(),
+                                       resource_to_texture_map_.end());
 }
 
 scoped_ptr<mojo::GLTexture> ResourceManager::CreateTexture(
@@ -73,11 +76,14 @@
   for (size_t i = 0u; i < resources.size(); ++i) {
     mojo::ReturnedResourcePtr resource = resources[i].Pass();
     DCHECK_EQ(1, resource->count);
-    glWaitSyncPointCHROMIUM(resource->sync_point);
-    mojo::GLTexture* texture = resource_to_texture_map_[resource->id];
+    auto iter = resource_to_texture_map_.find(resource->id);
+    if (iter == resource_to_texture_map_.end())
+      continue;
+    mojo::GLTexture* texture = iter->second;
     DCHECK_NE(0u, texture->texture_id());
-    resource_to_texture_map_.erase(resource->id);
+    resource_to_texture_map_.erase(iter);
     // TODO(abarth): Consider recycling the texture.
+    glWaitSyncPointCHROMIUM(resource->sync_point);
     delete texture;
   }
 }
