Index: trunk/src/gui/gui_renderer.cc
===================================================================
--- trunk/src/gui/gui_renderer.cc	(revision 299)
+++ trunk/src/gui/gui_renderer.cc	(revision 301)
@@ -65,6 +65,6 @@
 {
 public:
-	screen_render_data( context* ctx, size_t initial_size )
-		: buffer( ctx, nv::DYNAMIC_DRAW, initial_size ), varray( nullptr ), shader(nullptr), texture(nullptr) 
+	screen_render_data( context* actx, size_t initial_size )
+		: buffer( actx, nv::DYNAMIC_DRAW, initial_size ), varray( nullptr ), shader(nullptr)
 	{
 
@@ -74,11 +74,10 @@
 		delete shader; 
 		delete varray; 
-		delete texture;
 	}
 
 	nv::sliced_buffer<gui_quad> buffer;
+	nv::texture       tex;
 	nv::vertex_array* varray;
 	nv::program*      shader;
-	nv::texture2d*    texture;
 };
 
@@ -121,5 +120,5 @@
 
 	nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::CLAMP_TO_EDGE );
-	sr->texture = m_window->get_device()->create_texture2d( m_atlas.get_size(), nv::RGBA, nv::UBYTE, sampler, nullptr );
+	sr->tex = m_window->get_device()->create_texture( m_atlas.get_size(), image_format( nv::RGBA, nv::UBYTE ), sampler, nullptr );
 
 	m_render_state.depth_test.enabled = false;
@@ -262,5 +261,5 @@
 	if ( m_reupload )
 	{
-		m_context->update( sr->texture, (void*)m_atlas.get_data() );
+		m_context->update( sr->tex, (void*)m_atlas.get_data() );
 		m_reupload = false;
 	}
@@ -273,5 +272,5 @@
 		sr->varray->update_vertex_buffer( nv::slot::COLOR,    vb, false );
 	}
-	m_context->bind( sr->texture, TEX_DIFFUSE );
+	m_context->bind( sr->tex, TEX_DIFFUSE );
 	m_context->draw( TRIANGLES, m_render_state, m_scene_state, sr->shader, sr->varray, sr->buffer.get_size() * 6 );
 }
@@ -283,4 +282,8 @@
 		delete p;
 	}
-	delete m_render_data;
-}
+	if ( m_render_data )
+	{
+		m_context->get_device()->release_texture( ((screen_render_data*)m_render_data)->tex );
+		delete m_render_data;
+	}
+}
