output.href = canvas.toDataURL('image/jpeg'); нужно делать после того, как картинка загрузилась и отрисовалась, иначе будет пусто. Внутри функции onload делай это.
Вот так работать будет:
https://jsfiddle.net/2hnxLbfr/ (из агрессивных стран открывать через VPN)
Когда я пытаюсь скачать итоговый файл, нажимая на ссылку, скачивается изображение с чёрным фоном.