diff --git a/src/r_picformats.c b/src/r_picformats.c
index 27d4c010f8d70f086f4111d0a47723019ba8aeec..cb235590a4004b141b90fcc48fb46293adbe800e 100644
--- a/src/r_picformats.c
+++ b/src/r_picformats.c
@@ -532,14 +532,20 @@ void *Picture_GetPatchPixel(
 				if ((topdelta + ofs) == y)
 				{
 					if (informat == PICFMT_PATCH32)
-						return (s32 + ofs);
+						return &s32[ofs];
 					else if (informat == PICFMT_PATCH16)
-						return (s16 + ofs);
+						return &s16[ofs];
 					else // PICFMT_PATCH
-						return (s8 + ofs);
+						return &s8[ofs];
 				}
 			}
-			column = (column_t *)((UINT8 *)column + column->length + 4);
+			if (informat == PICFMT_PATCH32)
+				column = (column_t *)((UINT32 *)column + column->length);
+			else if (informat == PICFMT_PATCH16)
+				column = (column_t *)((UINT16 *)column + column->length);
+			else
+				column = (column_t *)((UINT8 *)column + column->length);
+			column = (column_t *)((UINT8 *)column + 4);
 		}
 	}