The Vancouver Canucks have agreed to a one-year, $775,000 contract with forward Linus Karlsson, the team announced Friday.