$TERM returns screen
You've told the programs that you are running under Screen to look at the screen entry from the terminfo database when they want to do terminal-related stuff like colourize output. That entry tells them (via the common ecma+color entry) that the terminal has 3-bit standard colour support from 1976.
In fact, your version of Screen can very likely support a lot more than that.
You are probably looking for the screen-256color entry, which tells them that the terminal supports 8-bit indexed colour, or even the screen-256color-bce entry which specifies 8-bit indexed colour capability and background colour erase capability.
You tell them this by simple dint of setting the TERM environment variable to the value screen-256color, or screen-256color-bce.
You can start screen with the -T option to specify what TERM variable it should set for the programs it runs, i.e.,
screen -T screen-256color-bce
This is preferable to setting that somewhere "globally", as it doesn't affect programs run any other way than from within a screen session.
Further reading
screen-16color?