diff --git a/libswscale/utils.c b/libswscale/utils.c
index e176f0b75bd61c4c0aa0bb96c607f4ab134192a0..851965091a8d973a454aec3dced8656fda77eed4 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -838,7 +838,7 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4],
 
     //The srcBpc check is possibly wrong but we seem to lack a definitive reference to test this
     //and what we have in ticket 2939 looks better with this check
-    if (need_reinit && c->srcBpc == 8)
+    if (need_reinit && (c->srcBpc == 8 || !isYUV(c->srcFormat)))
         ff_sws_init_range_convert(c);
 
     if ((isYUV(c->dstFormat) || isGray(c->dstFormat)) && (isYUV(c->srcFormat) || isGray(c->srcFormat)))