Разместите изображение на том же хосте, где обслуживается ваша страница, webgl помечает холст как испорченный, когда вы используете междоменный ресурс для рендеринга. Была такая же проблема, и это решило ее.
Edit:
Чтобы немного расширить, текущие реализации WebGL делают это как механизм, позволяющий не разрешать вредоносным страницам использовать драйверы для управления рабочей станцией пользователя. Помните, что вы передаете массив для вызова readPixels, и его можно использовать для атаки переполнения буфера, что делает WebGL потенциальной угрозой безопасности.
2-е редактирование:
В настоящее время ведется работа по поддержке еще более качественных перекрестных изображений в canvas и webgl, вы можете проверить это здесь