NOTE: I am using the Australian Dollar for currency in this example ( something I can not figure out how to display on Coin Market Cap ! )
If you try to use CAD and other non-USD, non-EUR currencies, you will most probably face not only the problems of the token's price, also problems with different quotations for USD-CAD (or other currency).
CMC and CoinGecko get info from various exchanges and various pairs. They may or may not care of your exchange. They may even care about the reported volumes to make certain exchanges' price be more meaningful (weighted average).
Of course, the average between sell and buy price is the basis in all cases.
Then, as I said, depending on what they use for converting to CAD, the differences can get even bigger.
What gives ? These are huge differences if you've got large number of tokens !?
Nothing spectacular. It simply means that with some luck and by looking up the right moment and the right exchange, you may buy cheaper or sell more expensive than you do at your local exchange.
This is what arbitrage is made for - some traders try to even earn money from such differences. But you're at the middle, and if the spread is not too big at your exchange then you're fine.
However, I'd warn that arbitrage is risky - from getting onto unknown exchanges with issues at deposits or withdrawals to slow blocks making the difference disappear by the time your money arrive to the right exchange - so be careful if you go on that path.