No fee on the Amazon Visa, 1% cash back on purchases, and 2% on purchases at amazon.ca. I've been using it for all my foreign currency purchases for the past couple of years - love it.
Another option is to open a bank account in the US and use a foreign exchange service to transfer from your Canadian account. Someone upthread mentioned forex.com; I use xetrade.com, same idea. XE markup on CAD/USD conversions is usually 1.3 - 1.45%. But with the new no-forex-fee credit cards the only big advantage to this is that you get to tightly control the timing of your trade. And unless you're doing business in the US or making direct USD investments, it probably works just as well with a Canadian USD account and credit card.
ETA: Both the Amazon and Marriott cards are Visa, so if OP is looking for a MasterCard then either the Sears card or a USD MasterCard might be a better choice.