The ATmega8 has different part numbers for 3.3V and 5V parts. If you have a 5V part it will not operate reliably at 3.3V.
A 328P (note P suffix) can operate at different voltages and speeds without changing parts.
Create a new boards.txt entry for your part, or just use an 8MHz board entry like the lilypad or the 8MHz Pro, and you won't have baud rate errors (or millis() errors, or delay() errors, etc...).
My CPU runs great, all the IO functions are rigth. The only thing is know if i use a 8Mhz crystal, using the internal prescalers UART setup, at 2400BPS how many bauds i have like error.
I got 2400Bauds, but i want to know what is the error using a 8Mhz and what if i use a 16Mhz Xtal.
At UART always we have some speed diferences, smallers but they are.
In fact, 16Mhz or 8Mhz for 2400Bauds do not give a standar preescaler value, 3333,333...4 will be the number