_fillMipMap() {
    const ctx = this.canvas.getContext("2d");

    // First zoom-level comes from the image
    const to = this.coordinates[0];
    ctx.drawImage(this.image, to[0], to[1], to[2], to[3]);

    // The rest are copy actions internal to the canvas/context
    for (let iterations = 1; iterations < this.NUM_ITERATIONS; iterations++) {
      const from = this.coordinates[iterations - 1];
      const to = this.coordinates[iterations];

      ctx.drawImage(
        this.canvas,
        from[0],
        from[1],
        from[2],
        from[3],
        to[0],
        to[1],
        to[2],
        to[3]
      );
    }
  }
Redraw main image in various sizes to the context.

The rationale behind this is to reduce artefacts due to interpolation
at differing zoom levels.

Source: http://stackoverflow.com/q/18761404/1223531

This methods takes the resizing out of the drawing loop, in order to
reduce performance overhead.

TODO: The code assumes that a 2D context can always be gotten. This is
not necessarily true! OTOH, if not true then usage of this class
is senseless.
@private