WIP: Custom colour support.

This was written on a long haul flight with no sleep: it is probably
terrible.