I'm sorry if it's a duplicate, I found lots of issues with gradients but none of the open ones looks similar.
It's apparently the PDF code `/Matrix [440 0 0 -200 20 220]` (line 44 in both files) that causes the problem.

**Configuration:**
- Web browser and its version: Chrome 54
- Operating system and its version: Windows 10
- PDF.js version: 1.6.343

**Steps to reproduce the problem:**
Open attached files:
[radial.pdf](https://github.com/mozilla/pdf.js/files/610302/radial.pdf)
[linear.pdf](https://github.com/mozilla/pdf.js/files/610300/linear.pdf)

**What is the expected behavior?** (Adobe Reader 11)
![image](https://cloud.githubusercontent.com/assets/17966696/20583379/fa80d780-b1f1-11e6-85d2-62dd6970a08c.png)

**What went wrong?** (mozilla.github.io/pdf.js/web/viewer.html)
Gradients aren't correctly transformed
![image](https://cloud.githubusercontent.com/assets/17966696/20583361/cf5bb8a4-b1f1-11e6-9479-9cc606b41187.png)

height,
    subtype,
    backdrop,
    transferMap
  ) {
    const hasBackdrop = !!backdrop;
    const r0 = hasBackdrop ? backdrop[0] : 0;
    const g0 = hasBackdrop ? backdrop[1] : 0;
    const b0 = hasBackdrop ? backdrop[2] : 0;
    let composeFn;
    if (subtype === "Luminosity") {
      composeFn = composeSMaskLuminosity;
    } else {
      composeFn = composeSMaskAlpha;
    }
    
    const PIXELS_TO_PROCESS = 1048576;
    const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
    for (let row = 0; row < height; row += chunkSize) {
      const chunkHeight = Math.min(chunkSize, height - row);
      const maskData = maskCtx.getImageData(0, row, width, chunkHeight);
      const layerData = layerCtx.getImageData(0, row, width, chunkHeight);
      if (hasBackdrop) {
        composeSMaskBackdrop(maskData.data, r0, g0, b0);
      }
      composeFn(maskData.data, layerData.data, transferMap);
      maskCtx.putImageData(layerData, 0, row);
    }
  }
  function composeSMask(ctx, smask, layerCtx) {