The French stormed home on a damp night at McLean Park but they will still be heavy underdogs against New Zealand after this unconvincing display.
Their winning break on the tough but fading Canadians arrived in only the 65th minute, when France's first decent attack of the match found space on the right, and fullback Damien Traille veered infield on a long run to the line. Two late tries on fulltime gave France a deceptively large win and a bonus point.
A run of penalties close to halftime allowed France to get their first comfortable lead on Canada, who had bombed and bustled their way into a good position for much of the first half.
France might have been a touch nervous after an up-and-down opening performance against Japan - they would have seen this match as a vital chance to make a statement and build confidence before the big Pool A clash against New Zealand.
Canada have a respectable World Cup record against France, having suffered relatively narrow defeats in 1991 and 1999. Coach Kieran Crowley retained the same first string lineup from the Tonga win, while France made major changes.
Bombs brought early tries to each side, firstly to the French wing Vincent Clerc and a few minutes later to the Canadian centre Ryan Smith. Canada might have been able to wind up the French nerves had fullback James Pritchard not missed a couple of penalties, and first five-eighths Ander Monro failed with a drop goal.
But referee Craig Joubert hammered Canada late in the half, giving the French both field position and goal attempts.
Morgan Parra grabbed the opportunities, nailing three penalties in quick succession to set up the 19-10 halftime lead.
Yet another Parra penalty, his fifth, was met by two Monro drop goals early in the second half, the second a wonderful snap decision. Parra finally missed with a penalty attempt leaving the Canadians just 22-16 in arrears with half an hour remaining.
The margin remained the same a few minutes later after more tit-for-tat goals and you could sense the French nerves were starting to jangle a little.
France 46 (Vincent Clerc 3, Damien Traille tries; Morgan Parra 5 pen, 4 con, Francois Trinh-Duc drop goal)
Canada 19 (Ryan Smith try, James Pritchard 2 pen, con, Ander Monro 2 drop goals). HT: 19-10.