Implement custom backgrounds.

Occasional weirdness with repeating, but nothing too bad.