anchor.diff:  import 'dart:math' as math;
   import 'package:crypto/crypto.dart' show CryptoUtils;
   import 'package:chrome_gen/chrome_app.dart' as chrome;
  +import 'package:mime/mime.dart' as mime;
   import '../utils/html_utils.dart';
   import '../../workspace.dart';
   
  
positive.code:     _loadFile();
    }
  
    /// Mime type of the file (according to its file name).
    String get _mime {
      int dotIndex = _file.name.lastIndexOf('.');
      if (dotIndex < 1) return null;
      String ext = _file.name.substring(dotIndex + 1);
      if (ext.length < 3) return null;
      ext = ext.toLowerCase();
      switch(ext) {
        case 'jpg':
        case 'jpeg':
          return 'image/jpeg';
        case 'gif':
          return 'image/gif';
        case 'png':
          return 'image/png';
        default:
          return null;
      }
    }
  
    _loadFile() {
      _image.onLoad.listen((_) {
        resize();
      });
      _file.getBytes().then((chrome.ArrayBuffer content) {
        String base64 = CryptoUtils.bytesToBase64(content.getBytes());
        _image.src = 'data:${_mime};base64,$base64';
      });
    }
  
  
negative.code: 
    ImageViewer(this._file) {
      _image.draggable = false;
      html.window.onResize.listen((_) => resize());
      rootElement.classes.add('imageeditor-root');
      rootElement.append(_image);
      rootElement.onMouseWheel.listen(_handleMouseWheel);
  