diff --git a/postproc/rgb2rgb.c b/postproc/rgb2rgb.c
index 45770bd005ab21748fe72cc95efeff4c397e88a9..fc87b9c02ca992b92ab9265052fdd9018780dc65 100644
--- a/postproc/rgb2rgb.c
+++ b/postproc/rgb2rgb.c
@@ -332,11 +332,17 @@ void palette8torgb32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, cons
 
 	for(i=0; i<num_pixels; i++)
 	{
+		#ifdef WORDS_BIGENDIAN
+		dst[3]= palette[ src[i]*4+2 ];
+		dst[2]= palette[ src[i]*4+1 ];
+		dst[1]= palette[ src[i]*4+0 ];
+		#else
 		//FIXME slow?
 		dst[0]= palette[ src[i]*4+2 ];
 		dst[1]= palette[ src[i]*4+1 ];
 		dst[2]= palette[ src[i]*4+0 ];
 //		dst[3]= 0; /* do we need this cleansing? */
+		#endif
 		dst+= 4;
 	}
 }
@@ -346,11 +352,18 @@ void palette8tobgr32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, cons
 	unsigned i;
 	for(i=0; i<num_pixels; i++)
 	{
+		#ifdef WORDS_BIGENDIAN
+		dst[3]= palette[ src[i]*4+0 ];
+		dst[2]= palette[ src[i]*4+1 ];
+		dst[1]= palette[ src[i]*4+2 ];
+		#else
 		//FIXME slow?
 		dst[0]= palette[ src[i]*4+0 ];
 		dst[1]= palette[ src[i]*4+1 ];
 		dst[2]= palette[ src[i]*4+2 ];
 //		dst[3]= 0; /* do we need this cleansing? */
+		#endif
+		
 		dst+= 4;
 	}
 }