I had that happen to me at The JW Marriott Rio de Janerio over New Years. My rate of $210USD for 10 nights was booked on marriott.com. I expected to pay in USD when I checked out. Well that did not happen. The hotel converted the USD into local currency at a premium and then charged my Canadian issued credit card the local rate, which Amex then added their currency premium.
Now I expected Amex to add a premium, but to get the one two punch from the hotel that was NOT right.
I contacted Marriott Guest Relations and they contacted the hotel. In the end the hotel refunded me the difference using the rate on
www.xe.com
I also got some extra bonus points for my trouble. I would suggest you contact Starwood Customer Service.
By the way the dollar difference in my case was $304.00 CDN
Good Luck!