The problem is I can only get 3.6v out when 3v is applied
That's because that op amp will not give you a rail to rail swing. You can get these but they are expensive. However you don't need to go to anything like as complex as an op amp. Just use a switching transistor with a small resistor in the base. The signal will then be upside down so you will need either a second transistor or an inverter to get it hte right way up.
Mike and mem have good solutions (although I'm not crazy about the 2n7000 because it's so freakin' ESD sensitive).
If you'd rather buy a module than wire it yourself, sparkfun has one. Maxim also has some specific ICs to do the job (I think "level translator" is the search term to use there).
As gnu_linux pointed out, if it's RS232, you can use a 3.3V to RS232 translator, but with a USB arduino that means you also need a 5V to RS232 translator for the arduino end of the connection.
although I have never had a problem with ESD using 2n7000 fets
to be honest, the only time I've had a problem is when they were used as an RS232/TTL inverter, so that the FET pin was exposed to the outside world on a DB9 pin. I have blown several of them on one device, and I'm not the only one. The designer found an ESD-protected 2n7000, and switched to a "real" RS232 transceiver on later designs.