Most file I/O is done by hand and not very well. GIF is particularly
hideous. This is part of our color loss, certainly. ImageIO didn't
exist at the time, you see.
There's this "manual" palette mode which restricts all drawing to
colors in the palette. Integrated into this is quantization, which is
done very poorly. This needs to be rethought along with the rest of
the palette: people don't really care about 8-bit because of device
restrictions. They need to manage their palette just because they're
not using many colors.
Image scaling (Edit -> Scale Canvas…) is done in the most complicated
way possible.
The tool properties system does not really respect MVC; it should use
NSViewController.
The backgrounds system and its UI are about 50 times more complicated
than they need to be.
More when I think of them!
—Andy