Try the following patch.
This only seems to affect applications using the CUPS v1.1 libraries - applications using the CUPS v1.2 libraries seem to work OK.
diff -ru gs-esp-8.15.3.dfsg.1/src/gxcht.c gs-esp-8.15.3.dfsg.1-fixed/src/gxcht.c --- gs-esp-8.15.3.dfsg.1/src/gxcht.c 2005-01-19 15:08:41.000000000 +1100 +++ gs-esp-8.15.3.dfsg.1-fixed/src/gxcht.c 2007-12-25 19:55:36.000000000 +1100 @@ -1087,7 +1087,14 @@ int tw = btile->size.x; int bx = ((ptc->tile_shift = btile->shift) == 0 ? endx : endx + lasty / btile->size.y * ptc->tile_shift) % tw; - int by = lasty % btile->size.y; + int by; + + if (lasty < 0) + by = btile->size.y - (-lasty % btile->size.y); + else + by = lasty % btile->size.y; + + by = lasty % btile->size.y; ptc->xoffset = bx >> 3; ptc->xshift = 8 - (bx & 7);