... at a cost of durability. Tho some sort of error recovery algorithm (along the lines of parity archive) could be used.. adding redundancy at a lower rate than what is gained from additional colors..
Color might be useful as redundancy: For example, one could read the data into HSV; the bit being stored could be replicated three times, once in Hue, once in Saturation, and once in Value. I'm not sure how practical this actually is, especially on the radical end of those values. Also, this kind of redundancy doesn't help against coffee spills, just printing errors, and not even well against those.