diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index e86119df6f56775a6f03b11a82f9cbfa28c46787..c68c4c1885391d683a5439878680a5e93e1ff56f 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2929,6 +2929,8 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int
             {
                 FIXME("Cannot convert %s to %s.\n", debug_d3dformat(src_texture->resource.format->id),
                         debug_d3dformat(dst_texture->resource.format->id));
+                if (context)
+                    context_release(context);
                 return WINED3DERR_NOTAVAILABLE;
             }
             src_texture = converted_texture;