I want to drive RGB LEDs at a very low brightness, but an RGB LED driven as yellow always turns red at low brightness, whether neopixel or analog LED?

have you tried pure red, pure green and pure blue at low brightness? can you go all the way to 1?
does the library you use have gamma correction?