@wardred Thanks for sharing your .blend. I looked at it and noticed that the gradient is caused by the normals. My guess is your auto-smooth value was different between your objects. Then when you combined them into one object, they all inherited the same value which caused inconsistency.