The Saltires had been idle since June 4 but they brushed away the cobwebs to claim two valuable points in their quest to book a place at the 2015 World Cup.
This win takes them into second place in the eight-team table from which the top two will earn automatic qualification and, while they have played two matches more than third-placed United Arab Emirates, their fate is in their own hands.
After restricting the Canadians to 176 runs on a slow track, the Scots had MacLeod to thank for completing the job. The Uddingston batsman, attracting the interest of Northants, produced easily the best innings of the day on his way to his first ODI half-century.
MacLeod suffered the early loss of opening partner Kyle Coetzer with just six runs on the board but his stand of 92 for the second wicket with Josh Davey put the Scots on course to victory. Davey contributed just 23 of them before being bowled by Durand Soraine, while Gordon Goudie weighed in with a quick 17 in his mid-innings pinch-hitting role.
However, MacLeod – using the sweep shot to particularly good effect – ensured that Scotland took full advantage of the power-play to post 71-1 from the first 15 overs – 22 more than their opponents. He looked likely to reach three figures, having moved to 98 when an overthrow rather anticlimactically presented him with his final run and the Scots with a four-wicket victory with 46 balls to spare. His 99 came from 127 balls and included 12 boundaries.
Yet despite his prominence, the 23-year-old remained modest about his display. "A first ODI ton would have been nice but victory is more important," he said. "We've got to look at the bigger picture and this is a vital two points on our way to hopefully reaching the World Cup."
Ali Evans led the way with a lively new-ball spell that was rewarded with the wicket of Hiral Patel, who was trapped in front. However, there was spirited resistance from the Canadians and particularly from Ruvindu Gunasekera.
The tall left-hander was quick to seize on any loose deliveries, hitting balls from both Evans and Goudie for early boundaries. Davey came in for harsher treatment at the hands of Gunasekera who bludgeoned a delivery from the Middlesex bowler over the deep square leg boundary.
Davey recorded record ODI bowling figures of 5-9 on his last appearance at this ground against Afghanistan but his first over alone went for eight runs. Davey did recover to claim the wicket of Nitish Kumar, who was caught behind by Craig Wallace.
However, at 55-2, Canada had a platform from which they must have expected to score in excess of 200. There was even the ironic sight in this wettest of summers of a short delay while Gunasekera complained about the reflection from the poles of the scoreboard.
A coat of paint seemed to satisfy the batsman, who continued to put the Scots on the back foot, claiming his second maximum with a prodigious hit over extra cover off Gordon Drummond. Gunasekera went on to complete a fine 69-ball half-century which included five boundaries in addition to the sixes. However, he was teased out of his crease soon after by Majid Haq and Wallace completed the stumping.
Zeeshan Siddiqi kept the score ticking over with a patient 43 before he became Haq's second victim after hitting his own wicket. Haq recorded excellent figures of 2-19 from his 10 overs. Canada's batting was chaotic as the visitors slipped to 176 all out.
"The guys have worked extremely hard and they deserved the win," said Pete Steindl, the Scotland coach.