diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 360f033661a42316f31baef4609954ae1baad144..00d21689584c68a8a947e325792281352293cab3 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -417,9 +417,9 @@ static inline void yuv2nv12XinC(int16_t *lumFilter, int16_t **lumSrc, int lumFil
                         
 #define YSCALE_YUV_2_RGBX_C(type) \
 			YSCALE_YUV_2_PACKEDX_C(type)\
-			r = c->table_rV[V];\
-			g = c->table_gU[U] + c->table_gV[V];\
-			b = c->table_bU[U];\
+			r = (type *)c->table_rV[V];\
+			g = (type *)(c->table_gU[U] + c->table_gV[V]);\
+			b = (type *)c->table_bU[U];\
 
 #define YSCALE_YUV_2_PACKED2_C \
 		for(i=0; i<(dstW>>1); i++){\
@@ -432,9 +432,9 @@ static inline void yuv2nv12XinC(int16_t *lumFilter, int16_t **lumSrc, int lumFil
 #define YSCALE_YUV_2_RGB2_C(type) \
 			YSCALE_YUV_2_PACKED2_C\
 			type *r, *b, *g;\
-			r = c->table_rV[V];\
-			g = c->table_gU[U] + c->table_gV[V];\
-			b = c->table_bU[U];\
+			r = (type *)c->table_rV[V];\
+			g = (type *)(c->table_gU[U] + c->table_gV[V]);\
+			b = (type *)c->table_bU[U];\
 
 #define YSCALE_YUV_2_PACKED1_C \
 		for(i=0; i<(dstW>>1); i++){\
@@ -447,9 +447,9 @@ static inline void yuv2nv12XinC(int16_t *lumFilter, int16_t **lumSrc, int lumFil
 #define YSCALE_YUV_2_RGB1_C(type) \
 			YSCALE_YUV_2_PACKED1_C\
 			type *r, *b, *g;\
-			r = c->table_rV[V];\
-			g = c->table_gU[U] + c->table_gV[V];\
-			b = c->table_bU[U];\
+			r = (type *)c->table_rV[V];\
+			g = (type *)(c->table_gU[U] + c->table_gV[V]);\
+			b = (type *)c->table_bU[U];\
 
 #define YSCALE_YUV_2_PACKED1B_C \
 		for(i=0; i<(dstW>>1); i++){\
@@ -462,9 +462,9 @@ static inline void yuv2nv12XinC(int16_t *lumFilter, int16_t **lumSrc, int lumFil
 #define YSCALE_YUV_2_RGB1B_C(type) \
 			YSCALE_YUV_2_PACKED1B_C\
 			type *r, *b, *g;\
-			r = c->table_rV[V];\
-			g = c->table_gU[U] + c->table_gV[V];\
-			b = c->table_bU[U];\
+			r = (type *)c->table_rV[V];\
+			g = (type *)(c->table_gU[U] + c->table_gV[V]);\
+			b = (type *)c->table_bU[U];\
 
 #define YSCALE_YUV_2_ANYRGB_C(func, func2)\
 	switch(c->dstFormat)\
diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c
index 55c4bb2d4b07b00009d7ea2a2a59ed64abff2d3b..645328ce7817ef08b4c4bcce6a8783a9b5a15036 100644
--- a/libswscale/yuv2rgb.c
+++ b/libswscale/yuv2rgb.c
@@ -213,9 +213,9 @@ const int32_t Inverse_Table_6_9[8][4] = {
 #define RGB(i)					\
 	U = pu[i];				\
 	V = pv[i];				\
-	r = c->table_rV[V];			\
-	g = c->table_gU[U] + c->table_gV[V];		\
-	b = c->table_bU[U];
+	r = (void *)c->table_rV[V];			\
+	g = (void *)(c->table_gU[U] + c->table_gV[V]);		\
+	b = (void *)c->table_bU[U];
 
 #define DST1(i)					\
 	Y = py_1[2*i];				\