If you see this problem, your X server is probably using a PseudoColor visual, and is dynamically allocating colours to clients from a limited colourmap. On these types of displays, @gnubg{} tries to be a well-behaved client by using colours from the default standard colourmap. This will allow it to share colours with other clients that use the same scheme, which will help them all to use as many colours as possible without exhausting the colourmap.
Unfortunately, not all X clients use standard colourmaps. If other clients have been run before @gnubg{} and allocated most of the colours, then there may not be enough left for @gnubg{} to allocate a standard colourmap. If this happens, it will just take what it can get (which in the worst case might be black and white only). You can try to avoid this problem by running @gnubg{} before other colour-hungry clients, or by using the `xstdcmap' utility to install the default standard colourmap early in your session while colours are still available. Depending on your hardware, you may be able to configure your display to allow more colours, or use a DirectColor or TrueColor visual which should resolve the problem.
Of course, if your X server can only display black and white (not even shades of grey), then there's not much you can do!