The Canucks agreed with defenseman Marcus Pettersson on a six-year contract extension worth $33 million on Wednesday, just days after Pettersson arrived from Pittsburgh in a trade.