We generally avoid canal side places to eat as they are usually overpriced and under quality. There is, however, an exception that is very close to San Marco.. You might want to try Trattoria Da Giorgia ai Greci. It is a very short walk from S. Marco, and an easy way to get away from the crowds.
One of our favorite places (but not on a canal -- and in the Rialto Bridge area) is a place named Trattoria Da Marco Valla Fava on Calle Stagneri. It is definitely an upscale place that has some of the best sea food ever!! Try to eat inside rather than outside. The place has been around at least 50 years so they must be doing it right.
At the other end of the scale, also in the Rialto area on the other side of the Grand Canal when walking to Piazzale Roma, is an out of the way place named Pane Vino e San Daniele on Calle Dei Boteri. Definitely a local place, good food, good house wine, and not expensive at all.
You should be able to check out all of them on the internet, and Google Maps street view is a great tool to locate these places and "walk" to them ahead of time.