anchor.diff:      }
     }
     
  +  /**
  +   * Draw the edges of the cells on context.
  +   */
     void drawLines(CanvasRenderingContext2D context) {
  -    // Create gradients
   
  +    // Don't consider edges which have been clipped completely away.
       var edges = voronoi.edges.where((x) => x.visible);
  +    
       for (var edge in edges) {
  +      // Create gradient
         var lingrad = context.createLinearGradient(
             edge.leftClippedEnd.x,
             edge.leftClippedEnd.y,
  
positive.code:     height = rect.height;
      canvas.width = width;
      
      var rng = new Random();
      Point randomPoint() => new Point(rng.nextInt(width), rng.nextInt(height));
      var randomPoints = new List.generate(100, (i) => randomPoint());
      var randomUniquePoints = new Set.from(randomPoints);
      //for (int i=0; i<10; i++) {
        voronoi = new Voronoi(new List.from(randomUniquePoints), null, new Rectangle(0, 0, width, height));
        
      //}
      requestRedraw();
    }
  
    void draw(num _) {
      num time = new DateTime.now().millisecondsSinceEpoch;
      if (renderTime != null) showFps(1000 / (time - renderTime));
      renderTime = time;
  
      var context = canvas.context2D;
      drawBackground(context);
      drawLines(context);
      drawSites(context);
      requestRedraw();
    }
  
    void drawBackground(CanvasRenderingContext2D context) {
      context.clearRect(0, 0, width, height);
    }
  
    void drawSites(CanvasRenderingContext2D context) {
      for (var site in voronoi.siteCoords()) {
        context
  
negative.code: 
    VoronoiDemo(this.canvas);
  
    // Initialize the diagram and start the simulation.
    void start() {
      // Measure the canvas element.
      Rectangle rect = canvas.parent.client;
  