Назвал вещи своими именами. Попытка #1.

Переделал историю в ООП стиле (Сам код абсолютно тот же), это лучше, чем
historyOperation(opid), куда передаются магические числа.
historyOperation(UNDO) еще было бы приемлимо.
Зачем наззывать совойства tool с большой буквы (все равно так никто не
делает), чтобы потом обращаться к ним таким образом:
a[i].charAt(0).toUpperCase() + a[i].substr(1); Про что такое "a" вообще
молчу.
В чем сокральный смысл нижней черты *после* буквы в c_, s_, a_, m_?
Наверное, чтобы враг не догадался, что это КОНСТАНТЫ, это слово я не зря
написал в ВЕРХНЕМ РЕГИСТРЕ.
Если функция называется savePic(), то она должна сохранять изображение,
а не загружать из localStorage и не отправлять на сервер.