diff options
-rw-r--r-- | pdf/pdf_interpret.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/pdf/pdf_interpret.c b/pdf/pdf_interpret.c index 0513c622..2f160eef 100644 --- a/pdf/pdf_interpret.c +++ b/pdf/pdf_interpret.c @@ -335,6 +335,7 @@ pdf_begin_group(pdf_csi *csi, const fz_rect *bbox) fz_rect mask_bbox = softmask->bbox; fz_matrix save_ctm = gstate->ctm; + fz_transform_rect(&mask_bbox, &softmask->matrix); fz_transform_rect(&mask_bbox, &gstate->softmask_ctm); gstate->softmask = NULL; gstate->ctm = gstate->softmask_ctm; @@ -1614,7 +1615,9 @@ pdf_run_extgstate(pdf_csi *csi, pdf_obj *rdb, pdf_obj *extgstate) if (!colorspace) colorspace = fz_device_gray; - fz_concat(&gstate->softmask_ctm, &xobj->matrix, &gstate->ctm); + /* The softmask_ctm no longer has the softmask matrix rolled into it, as this + * causes the softmask matrix to be applied twice. */ + gstate->softmask_ctm = gstate->ctm; gstate->softmask = xobj; for (k = 0; k < colorspace->n; k++) gstate->softmask_bc[k] = 0; |