|I learned this one the hard way. If you're dyeing over a color, it helps to first remove enough of the manufacturer's dye that you get down to the original base tones of the fabric.
In one case recently, the print of the fabric I was dyeing stayed a yucky mud green-brown no matter what I did to cover it. So I used color remover (NOT bleach, which can damage the fabric -- use the kind of color remover that comes in a box in the fabric dye section). It turns out that underneath, the print of my fabric is a light yucky yellow-greenish brown; no wonder I couldn't mask it or get it to go away. But knowing this, I can work WITH the fabric's undertones instead of going crazy trying to cover them up. (In this case I'll avoid dyeing the fabric with anything that has even a hint of red in it, because red and green are complementary colors, and complementary colors mixed together make muddy brown.)
Hope this helps someone. :)