Why is this using a map when the result is just being thrown away? Imagine how left out forEach feels :(.
Also: the afterglow is caused by the main loop filling the entire canvas with a black rect with very low opacity. The result is that after so many frames, everything but the actively drawing characters are much darker. Increase the opacity if you want to reduce the length of the effect.