Используйте clearRect () или fillRect () перед перерисовкой изображения PNG, если вы делаете это в цикле requestAnimationFrame или setInterval.
Я наткнулся наэтот вопрос, так как у меня была похожая проблема, но мой образ был уже на 24-битном.Если бы цикл requestAnimationFrame перерисовывал изображение PNG на холсте и (как вы сказали), когда они перекрывали друг друга, в результате были получены эти «сожженные» края, в которых должна была быть прозрачность альфа-эффекта «затухания».
ПростоОчистив область перед вызовом drawImage, вы можете предотвратить отображение этого изображения поверх самого себя.