DENVER -- The Calgary Flames broke out of their offensive doldrums in a big way.
Jiri Hudler and Joe Colborne had a goal and assist each, and Mike Cammalleri scored a power-play goal at 16:30 of the third period to lift Calgary to a 4-3 win over the Colorado Avalanche on Monday night.
Sean Monahan also scored and Karri Ramo stopped 22 shots for the Flames, whose snapped a four-game skid with the offensive outburst.
"It feels very good. It's been a tough little stretch for sure," Cammalleri said. "When things like that happen, it's easy to get negative."
Calgary came into the game having been shutout in three of its last four games. The Flames' only goal since Dec. 23 came in a 4-1 loss to Philadelphia.
"We wanted to come in and have fun and be loose a little. We had nothing to lose coming in here," TJ Galiardi said. "We wanted to string something together and this was a good place to start for us."
Nathan MacKinnon had two goals and Paul Stastny had a goal and two assists for the Avalanche, who had won three straight coming into the game.
The Avalanche may have lost more than the game. MacKinnon, who has four goals in the last two games, took a shot to the ankle late in the game and was visibly hurting. Colorado coach Patrick Roy said the rookie was going for an X-ray after the game.
"He got the puck on the ankle at the end of the game," Roy said. "We'll have more details tomorrow."
The game was tied at 3-all when Colorado drew a bench minor for too many men on the ice. With Jamie McGinn in the penalty box, Hudler fed Cammalleri in front of goalie Jean-Sebastien Giguere for the winner.
Giguere finished with 15 saves.
The Avalanche pulled Giguere for an extra skater with about a minute left but couldn't get a shot on net.
Giguere said the Flames played with more intensity throughout the game.
"They were hungrier," Giguere said. "They got, some would say, lucky bounces, but they created those bounces by going to the net, by creating traffic and that's how you score a goal in this game, in this league. I'm not sure we were willing to do that in front of their net."
Roy saw it differently than his goaltender.
"We may not have had the jump that we should have, but Giggy should have been better," Roy said. "He hasn't played well in the past four or five games and he should stand up and say, 'I'm not playing up to what I should.' He needs to be better and we need to have him playing better. Period."
After scoring just one goal in 240 minutes, the Flames scored twice in a span of 2:28 of the second period to take the lead. Colborne tied it when he tipped Galiardi's shot from the point with 2:32 left in the frame.
Hudler gave Calgary the lead when he battled for position in front of Giguere and then flicked a backhand through the goalie's legs to make it 3-2.
It was small consolation for Hudler, who was disappointed after he was left off the Czech National Team for next month's Olympics in Sochi, Russia.
"Right before the game we took a little walk with Jiri. He knows that people sit in the room, there's debate, you get picked, you don't get picked," Flames coach Bob Hartley said. "Obviously, everyone wants to be in the Olympics to represent their country so you're disappointed. But we saw that he's a pro."
The Avalanche got a power play at the end of the period but couldn't capitalize.
They tied it on Stastny's 12th goal of the season at 9:33 of the third.
The Flames took a 1-0 lead just 1:08 into the game. Monahan took a shot from the right circle that Giguere saved, but the rebound went off McGinn and into the net.
It was Calgary's second goal in the last five games and its first lead since beating St. Louis two weeks ago.
The celebration didn't last. MacKinnon tied it on the power play six minutes later when his shot from the side of the crease went off Ramo and through the goaltender's legs into the net.
The Flames took a bench minor for too many men on the ice, MacKinnon struck again. Stastny sent him a pass to the slot and MacKinnon buried it to make it 2-1 at 14:32 of the first.
NOTES: Colorado's Gabriel Landeskog extended his points streak to seven games with his 100th assist. ... Avalanche D Nate Guenin (ankle) was out after getting hit with a puck Saturday. Tyson Barrie took his place in the lineup. ... Flames RW David Jones was a scratch. He has one assist in his last 15 games. ... Colorado D Ryan Wilson was sent to Lake Erie of the AHL for a two-week conditioning assignment. Wilson has missed 22 games with a back injury but has been a healthy scratch for the last two games.