Oh god, don't be that guy - pull some CAD out of an ATM and save everybody the hassle
Seriously, while some larger or more tourist-oriented merchants will take USD, they'll generally give you an awful exchange rate. For small businesses like a restaurant or a regular old store, taking USD will be a huge inconvenience for them, as they'll have to make a special trip to the bank to change the currency, and the bank will in turn give them a bad exchange rate.
Also, some Americans give everybody a bad name by showing up in Canada and just assuming they're in another state, so everyone will take their money. Not so much. I was once on a public bus in Montreal where an American guy (wearing a floppy safari hat, too, for added comic effect) got on and tried to pay in USD - not with coins, mind you, but actual bills, which Canadian buses do not take - and in English. The driver gave him the look of death and basically told him, in French, to get some useful money. The American kept resisting, in English, and got the same reply, in French, and this went on for a good couple of minutes as the rest of us sat there, delayed. I so wanted to get up and yell at him.