Elias Pettersson tallied a goal and an assist, and Kevin Lankinen stopped 28 shots as the Vancouver Canucks topped the Calgary Flames 3-1.