diff --git a/libavcodec/texturedsp.c b/libavcodec/texturedsp.c
index 78eb6fa0ce9c7c8c636ac9b76e3822cabe8d4212..58446b1e69b9d2f74a84c8c810084e603f733e14 100644
--- a/libavcodec/texturedsp.c
+++ b/libavcodec/texturedsp.c
@@ -31,7 +31,10 @@
 
 #include "texturedsp.h"
 
-#define RGBA(r, g, b, a) (r) | ((g) << 8) | ((b) << 16) | ((a) << 24)
+#define RGBA(r, g, b, a) ((uint8_t)(r) <<  0) | \
+                         ((uint8_t)(g) <<  8) | \
+                         ((uint8_t)(b) << 16) | \
+                         ((uint8_t)(a) << 24)
 
 static av_always_inline void extract_color(uint32_t colors[4],
                                            uint16_t color0,