anchor.diff:    PixelColorChangeEvent(String type, PixelCanvasElement c, Pixel p,
         this.oldColor): super(type, c, p);
   }
  +class ActionChangeEvent {
  +  final oldAction;
  +  final newAction;
  +  ActionChangeEvent(this.oldAction, this.newAction);
  +}
  
positive.code:       _beforeRenderingEventController.stream;
    Stream<PixelCanvesEvent> get onAfterRendering =>
        _afterRenderingEventController.stream;
  
    CanvasRenderingContext2D get _canvasContext =>
        (_canvas == null) ? null : _canvas.getContext('2d');
  
negative.code:   }
  
    pixelsChanged() => render();
    currentActionChanged(Action old) {
      render();
      _dispachActionChange(old, currentAction);
    }
  
    void _dispachActionChange(Action oldAction, Action newAction) =>
      _actionChangeEventController.add(
        new ActionChangeEvent(oldAction, newAction));
  
    void _mouseOveredPxChange(Pixel oldPixel, Pixel newPixel, MouseEvent event) {
      if (newPixel != null)
  