Good you could make it work.

Yes, colors/materials is a very messy part of OpenGL. There are a lot of calculations and constants involved. Everytime I need to use it, I have to take some time to dive into the documentation. Shaders on the other hand are much cleaner, because they allow you to define your own calculations. There's still alot of learning involved though, but it's less cumbersome.