Sarah and I talked about this this morning, and think that a cleaner solution would involve:
- ImageViewer doesn't know anything about stage; instead, it should return a canvas that the calling function can copy to stage or wherever
- PixelEditor's image mono code belongs in ImageViewer