diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 56d13f67d56a19f37d8b9424629294017aad7598..0f3c4702f5908f42a45e44734d4985c8eac4e9bf 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -658,6 +658,7 @@ static HRESULT texture2d_bind(struct wined3d_texture *texture,
 
 static BOOL texture_srgb_mode(const struct wined3d_texture *texture, enum WINED3DSRGB srgb)
 {
+    const struct wined3d_gl_info *gl_info = &texture->resource.device->adapter->gl_info;
     switch (srgb)
     {
         case SRGB_RGB:
@@ -667,7 +668,8 @@ static BOOL texture_srgb_mode(const struct wined3d_texture *texture, enum WINED3
             return TRUE;
 
         default:
-            return texture->flags & WINED3D_TEXTURE_IS_SRGB;
+            return !gl_info->supported[EXT_TEXTURE_SRGB_DECODE]
+                    && texture->flags & WINED3D_TEXTURE_IS_SRGB;
     }
 }