Как сделать раскраску на canvas?
Если не смотреть на то, как это там реализовано, а подумать своей головой, то я бы сказал, что это в разы проще сделать с помощью SVG. Раскраска - это по сути векторная картинка с большим количеством замкнутых контуров (элементы path), которые еще на этапе рисования объединены в группы (элемент g), которые потом будут краситься в один цвет, клик на группу легко делается стандартным addEventListener('click' ..., а заливка - это атрибут fill с цветом. Ну а выбор карандашей - это стандартная карусель, только не с картинками, а с кучей кружков, на которые можно кликать и выбирать цвет для заливки.
Конкретно этот пример сделан на движке phaser. Спрайты на рабочей сцене, отслеживается клик по спрайту и закрашивается.