anchor.diff:    }
   }
   
  +class Color {
  +  final int h; // 0 - 360 (wraps)
  +  final num s; // 0 - 100
  +  final num l; // 0 - 100
  +  const Color.hsl(this.h, this.s, this.l);
  +  String toCss() => "hsl(${h%360},$s%,$l%)";
  +}
  +
  +List<Color> colorRange(Color start, Color end, int size) {
  +  var interpolate = (int start, int end, num scale) =>
  +      ((end - start) * scale + start).round();
  +
  +  var result = new List<Color>();
  +
  +  for (double i = 0.0; i < size; i++) {
  +    num scale = i / (size - 1);
  +    int h = interpolate(start.h, end.h, scale) % 360;
  +    int s = interpolate(start.s, end.s, scale);
  +    int l = interpolate(start.l, end.l, scale);
  +    result.add(new Color.hsl(h, s, l));
  +  }
  +
  +  return result;
  +}
  +
   typedef ClickHandler(Complex point);
   
   class MandelbrotView extends AnimatedTag implements Cloneable {
     final Complex center;
     final num radius;
  -  final int maxIterations;
   
     final int width;
     final int height;
  -  final List<String> colors;
  +  final List<Color> colors;
     final ClickHandler onClick;
   
     const MandelbrotView({
       this.center: const Complex(0, 0),
       this.radius: 2.0,
  -    this.maxIterations: 1000,
   
       this.width: 400,
       this.height: 400,
  -    this.colors: const [
  -      "#f10","#e20","#d30","#c40","#b50","#a60","#970",
  -      "#880","#790","#6a0","#5b0","#4c0","#3d0","#2e0","#1f0"],
  +    this.colors,
       this.onClick
     });
   
  
positive.code:   }
  
    void drawLine(CanvasRenderingContext2D context, int y) {
      num imag = - pixelToImag(y);
  
      int left = null;
      String prevColor = null;
      for (int x = 0; x < width; x++) {
        num real = pixelToReal(x);
        int count = probe(real, imag, maxIterations);
  
        String color = "#000";
        if (count < maxIterations) {
          color = colors[count % colors.length];
        }
  
        if (color != prevColor) {
  
negative.code:     if (onClick != null) {
        convertOnClick = (HandlerEvent e) {
          MousePosition m = e.value;
          onClick(new Complex(pixelToCoordX(m.x), pixelToCoordY(m.y)));
        };
      }
  
  