This means that 1 volume is black, but 0.5 volume is only slightly brighter. This makes the contrast horrible.

2. Super narrow bands are incorrect

Narrower time or frequency bands are actually quieter, but Audacity thickens bands to 1 pixel, making it misleading.

Extra things that should be fixed: Steep diagonals (when you zoom out) are literally broken, Audacity doesn't let its players use it while spectrograms are loading and you can't use fractional frequencies (which makes a difference in low frequencies).

More colors in the spectrogram , (i.e more bit-depth), would require more processing-time to render.

Bear-in-mind Audacity is free-software: designed for people on a low/no budget.The assumption will be such users do not have an expensive powerful computer,(or graphics card), which could cope with rendering high-resolution high-bit-depth graphics in real-time.

I don't mean to make it more complex, in fact, I want it less complex.

I don't need a high bit depth. I just want brightness to directly correspond to volume instead of logarithmic volume scale, and for super narrow bands to be represented correctly, not thickened to 1 pixel which makes it seem louder.

So for grayscale colors, 0, 1, 2, ..., 255 correspond to equal steps in direct volume, not dB. Obviously not calculating logarithm is less complex than calculating logarithm.

Currently there's not 255 different colour/shades-of-grey being used : it's a limited-palette, looks less than 32 shades.

I didn't say 255. There are 256 integers from 0 to 255.

I don't notice limited palette. What you see is either poor contrast from logarithmic volume scale, low frequency resolution (blame Audacity for choosing "256 - default" by default and not 4096) or super narrow bands being thickened to 1 pixel. If you actually pick colors you may end up with a different conclusion.

Actually that's not what low bit depth means. If there are accurate gradients it's high bit depth. Low bit depth is when gradients are represented by steps. And 6 color bands are irrelevant in grayscale view (which I prefer, as volume is 1-dimensional). There are actually many colors. Regardless of what the color bands are, there are many colors between what you may think.

Also by default, the gain is -20. This means that 0.1 to 1 volumes all appear black. This is very unacceptable. Mapping volume directly to brightness instead of bothering with logarithmic volume scale would improve it a lot.

Currently, the default settings are:

anything above -20 dB is indistinguishably white (the tone at -10 dB in the image above is white)levels from -40 dB to -20 dB transition from red to white (the tone at -30 dB in the image above is light red)levels from -60 dB to -40 dB transition from magenta to red (the tone at -50 dB in the image above is magenta)levels from -80 dB to -60 dB transition from dark blue to magenta (the tone at -70 dB in the image above is bluish purple)levels from -100 dB to -80 dB transition from light blue to dark blue (the tone at -90 dB in the image above is light blue)anything below -100 dB is gray.Customizable: gray scale, maximum, minimum

This default would be much better:

maximum volume in spectrogram is whitevolumes from 0 to maximum transition from black to white, with 2.2 gamma0 volume is blackCustomizable: max color, min color, gamma