diff --git a/components/codecs/src/opencv_decoder.cpp b/components/codecs/src/opencv_decoder.cpp
index b7f1a600ff2887330f9266cf8198b048d1770e73..6e094a0e5b1fe35af04eb651b327cf3c79d5bc3e 100644
--- a/components/codecs/src/opencv_decoder.cpp
+++ b/components/codecs/src/opencv_decoder.cpp
@@ -37,7 +37,11 @@ bool OpenCVDecoder::decode(const ftl::codecs::Packet &pkt, cv::cuda::GpuMat &out
 	if (tmp2_.type() == CV_8UC3) {
 		cv::cvtColor(tmp2_, tmp_, cv::COLOR_RGB2BGRA);
 	} else {
-		tmp_ = tmp2_;
+		if (pkt.flags & ftl::codecs::kFlagFlipRGB) {
+			cv::cvtColor(tmp2_, tmp_, cv::COLOR_RGBA2BGRA);
+		} else {
+			tmp_ = tmp2_;
+		}
 	}
 
 	// Apply colour correction to chunk