Defenceman MacKenzie Weegar scored his first career hat trick, and Jacob Markstrom shut the door with a 35-save performance to lift the Calgary Flames to a 5-2 win over the New York Islanders.