Index: pixmap_pcb.c =================================================================== --- pixmap_pcb.c (revision 36075) +++ pixmap_pcb.c (revision 36076) @@ -93,6 +93,7 @@ { rnd_pixmap_t *opm; pcb_xform_mx_t mx = PCB_XFORM_MX_IDENT; + pcb_xform_mx_t mxr = PCB_XFORM_MX_IDENT; long n, len, icx, icy, ocx, ocy, xo, yo, end; unsigned char *o, *i; double cs, sn, rotr; @@ -119,6 +120,7 @@ TODO("gfx: apply mirrors"); pcb_xform_mx_rotate(mx, rot); + pcb_xform_mx_rotate(mxr, -rot); opm->sx = pcb_xform_x(mx, (ipm->sx/2)+1, (ipm->sy/2)+1) * 2; opm->sy = pcb_xform_y(mx, -(ipm->sx/2)-1, (ipm->sy/2)-1) * 2; @@ -151,11 +153,11 @@ double XO = xo - ocx, YO = yo - ocy, XI, YI; /* rotate */ - XI = icx + (cs * XO - sn * YO); - YI = icy + (sn * XO + cs * YO); + XI = icx + pcb_xform_x(mxr, XO, YO); + YI = icy + pcb_xform_y(mxr, XO, YO); /* get final input pixel address, clamp */ - ixi = rnd_round(XI); iyi = rnd_round(ipm->sy - YI); + ixi = rnd_round(XI); iyi = rnd_round(YI); if ((ixi < 0) || (iyi < 0) || (ixi >= ipm->sx) || (iyi >= ipm->sy)) oor = 1; else