--- a/src/correct.c
+++ b/src/correct.c
@@ -640,7 +640,7 @@
     DENTER;
 	register int x,y;
 	int cdy, csy;
-	unsigned char *dest, *src, *d,*s;
+	unsigned char *dest, *src;
 	int bpp = TrPtr->src->bitsPerPixel/8;
 	int BitsPerChannel,channels,fcb;
 
@@ -664,6 +664,7 @@
 
 	if( BitsPerChannel == 8 )
 	{
+		unsigned char *d,*s;
 		for(y=0; y<TrPtr->dest->height; y++)
 		{
 			cdy = y * TrPtr->dest->bytesPerLine;
@@ -684,21 +685,22 @@
 	}
 	else // 16
 	{
+		USHORT *d,*s;
 		for(y=0; y<TrPtr->dest->height; y++)
 		{
 			cdy = y * TrPtr->dest->bytesPerLine;
 			csy = (y+yoff) * TrPtr->src->bytesPerLine;
 			for(x=0; x<TrPtr->dest->width; x++)
 			{
-				d = dest + cdy + x*bpp;
-				s = src  + csy + (x+xoff)*bpp;
+				d = (USHORT *) (dest + cdy + x*bpp);
+				s = (USHORT *) (src  + csy + (x+xoff)*bpp);
 				if(fcb)
 				{
-					*(((USHORT*)d)++) = *(((USHORT*)s)++);
-				}
-				*(((USHORT*)d)++) = *(((USHORT*)s)++);
-				*(((USHORT*)d)++) = *(((USHORT*)s)++);
-				*(((USHORT*)d)++) = *(((USHORT*)s)++);
+					*(d++) = *(s++);
+				}
+				*(d++) = *(s++);
+				*(d++) = *(s++);
+				*(d++) = *(s++);
 			}
 		}
 	}