Another 60% speedup; now runs smoothly on my Moto X.

Finally, success! Though if Chrome just supported image-rendering: crisp-edges, this would have been much simpler.