Arduino running at half baudrate

I have an Arduino Duemilanove and used it to burn the bootloader to an ATmega328 using the minimal circuit configuration on a breadboard (i.e. using only the in-built 8MHz clock, without any external clock). Now the ATmega328 is running programs at only half the baud rate, i.e. if I program it to transmit and receive data at 9600 baud, it runs at 4800 baud. What might be the cause of the problem? And how do I rectify it?

What board selection option are you using when you run a sketch in your standalone chip? Which bootloader did you burn into it. The board selection tells the compiler what clock speed the target is using as well as the baudrate to use when uploading to the bootloader, it's all in the boards.txt core file.

It seems that the math of the serial port is still based upon a 16Mhz clock, that would explain the factor 2.

First thing that comes in mind is to adapt the sketch to use double numbers.

The real solution is to change the F_CPU to 8000000 in the boards.txt file
or add an extra entry UNO8 that equals the UNO entry except for F_CPU