Cashish
I've visited both Quebec & Ontario this year - not to mention Amsterdam and Deutschland as well. As pointed out in some of the previous posts, 20% is big premium to pay for just being lazy and not converting USD to CDN. Here are a few tips:
There are websites you can use for ballpark exchange rates (travelling from ANY country to almost anywhere). Try this one - they show the greenback valued at almost $1.22 tonight :
http://www.xe.com/ucc/
I have a couple of banks that do not charge any fees to convert to other currencies or use ATMs, so that is by far the fastest and my preferred method of exchange. Only downside is that you are typically limited to about $400 per day per account.
As pointed out earlier, legit banks almost ALWAYS offer better rates on cash, traveller's cheques, gold bullion, etc than Hotels, Airports or other self-described "Currency Exchange" joints. All these places are making some money on you by either by shorting you on the going rate or charging a fee (or both).
Lastly, Credit Cards used to be THE way to go a few years ago, and many have now indeed started charging fees. But there are a few institutions left that still do not charge fees and offer favorable exchange rates as well. This is only helpful (in this case) if the SP will accept cc's. Obviously, if you get a cash advance on your cc anywhere, you are going to get nailed with a hefty finance charge regardless of whether you are in your home country or not.
Bottom line is you are better off converting yankee currency via any method with the current 20% premium than paying USD one-to-one for Canadian goods/services. Now if you happen to be carrying Australian dollars, then that is a different story altogether...