Is the driver for windows unable to set certain baud rates

I was trying to set the baud rate on the serial monitor to 38400 and it spit out garbage. I figured out that I needed to change the port settings in device manager to 115200 or it would not work. Then I was doing some debugging and I wanted a really slow speed so I set the serial monitor to 300 it spit out garbage again. I know I set the baud rate correctly on my arduino mega 2560. So I tried a different serial terminal and sure enough I got the same garbage. A baud rate of 28800 does not work at all. My computer is windows 7. I don't know what revision my board is but it is not a revision 3 for sure. I tried reinstalling drivers but nothing helps. I'm thinking Microsoft has changed something in the OS because it worked the last time I used this computer.

PS Does any one know what the port settings should be in device manager?

The problem is probably not with the PC side but with the Arduino itself. The baud rate is a multiple of the 8u2's clock. So some baud rates might not divide out in a way that works well.

What is the clock rate of the 8U2? Also I got 28800 to work in another serial program. It still doesn't work with the serial monitor in the Arduino IDE. btw I'm using the 1.0 version of the IDE.

PS Does any one know what the port settings should be in device manager?

Go into the windows advanced com port settings and see what is available. Maybe you wrote bad code, wrong board selected, etc.

I too suspect the problem is not on the PC side, however a easy test to find out is a simple loop-back test on the send rec signals going to the arduino board. Then run either the Arduino IDE serial monitor or a PC terminal program and see if data sent equals data received. On the Arduino board jumper a ground wire to the reset pin, and wire another jumper from shield pins 0 and 1, that will force all data sent by the PC to be returned back to the PC at the same baudrate selected.

I don't think the PC driver determines the baudrate, but rather a PC application program (like the Arduino IDE) tells the driver what baudrate it wants to utilize.