The Flames scored the game's first three goals and then held on in what was Montreal's first road contest of the season.
In his previous appearance last Sunday, MacDonald gave up three goals in the third period that allowed Vancouver to rally to a 5-4 overtime victory.
MacDonald gave up only a power-play goal to P.K. Subban through the first two periods before Lars Eller brought the Canadiens within one midway through the third.
Sean Monahan and Sven Baertschi scored first-period goals and Curtis Glencross gave the Flames a 3-0 lead late in the second with a power-play tally.
Carey Price gave up the three goals on 25 shots.
Calgary has recorded seven straight home victories over Montreal.
Aaron Carter is still in love with Hilary Duff
Boston schools pull out free condoms over wrapping complaints