Actually, AL_LEGEND defaults to drawing text in "Opposite", meaning opposite of the background color. For Coyote graphics and IDL function graphics (and postscript) this defaults to drawing black on a white background. The Coyote routines try to read a corner of the current window to determine the background color, but apparently this is not always successful (and a big source of headaches for David Fanning).
I would use the textcolor keyword to specify what color you want to the text to be (e.g. textcolor = 'red'). You can also specify the background_color.
I would not use !p.color to specify a color, which only made sense in the days of 8 bit color.