Whenever you see a dialog remembering the values when you enter and exit the dialog but resetting back to the default when saved you're likely to be dealing with an error in the way FRED saves the mission. In this case you have this code
float Ambient_light_level = 1.0f; // JAS: Should this be set to something?
required_string_fred("$Ambient light level:");
parse_comments();
fout(" %d", Ambient_light_level);
Now that's really interesting.

Looking at the rest of the code, it appears as though FRED goes to great lengths to set a value for the ambient factor and then at the last hurdle fails to actually write that value to the mission file for some stupid reason.
Looking at missionparse.cpp it is quite clear that both FRED and FS2 both read that value. Freespace 2 does appear to use it as well. Fixing the problem looks like a five minute job actually but I don't particularly fancy making a build of FRED and trying to upload it tonight using an install of MS VC that I installed today and haven't yet configured so most likely any changes I make will just go straight into CVS.
If you fancy having a play with it now though it's pretty simple if you know how to convert hex to decimal (basically use Windows calculator in scientific mode).
FRED will write 0 into any mission you save with it. Wehn loading however the game doesn't accept an ambient factor of 0 and converts it into 120, 120, 120. It will however accept any number between 1 and 16777215 as a valid RGB value.
Ambient factor changes the RGB into hex and then back into a decimal. So basically you have this
FFFFFF converted to a decimal.
All you have to do is replace
$Ambient light level: 0
in the mission file with a number between 1 and 16777215 and you're sorted.