anchor.diff:      context.fillRect(left, y, width - left, 1);
     }
   
  +  int get maxIterations => colors.length - 1;
  +
     num get radiusPixels => width < height ? width/2.0 : height/2.0;
     num scalePixel(num pix) => pix * radius / radiusPixels;
   
  -  num pixelToReal(int x) => scalePixel(x - width / 2) + center.real;
  -  num pixelToImag(int y) => -scalePixel(y - height / 2) + center.imag;
  +  num pixelToCoordX(int x) => scalePixel(x - width / 2) + center.real;
  +  num pixelToCoordY(int y) => -scalePixel(y - height / 2) + center.imag;
   }
   
   /// Returns the number of iterations it takes for the Mandelbrot sequence to
  
positive.code:       p.nextState = p.nextState.zoom(scaleAmount);
      }
      var center = p.state.center;
      return $.Div(inner: [
        new MandelbrotView(center: center, radius: p.state.radius, onClick: onClick),
        $.Div(inner: [
          $.Button(onClick: (_) => zoom(0.5), inner: "Zoom In"),
          $.Button(onClick: (_) => zoom(2.0), inner: "Zoom Out"),
  
negative.code:   }
  
    void drawLine(CanvasRenderingContext2D context, int y) {
      num imag = - pixelToCoordY(y);
  
      int left = null;
      String prevColor = null;
      for (int x = 0; x < width; x++) {
        num real = pixelToCoordX(x);
        int count = probe(real, imag, maxIterations);
  
        String color = "#000";
        if (count < maxIterations) {
          color = colors[count % colors.length].toCss();
        }
  
        if (color != prevColor) {
  