In your example, if you have legend('a','b','c','d','e','f'), you'll have the right legend. The problem is that you have 6 curves, the first 4 are color blue and the last 2 are color red. You only made 2 legend marks thus it took the color of the first 2 curves (both are blue). Matlab legend() function is doing the right thing.
But, that is the problem you want to solve. Try this,
set(c,'Color',[0 1 0])
You will see that it only makes one legend mark. Each legend mark will have three children (probably for line, marker and string). You can change the color for all of them by specifying the color as [Red Green Blue]. I believe this can solve your original problem.