Macdonald's career began while she was working as a barmaid in Glasgow. She saw a leaflet advertising an open casting session for "Trainspotting" and decided to audition, winning the part of Diane, the underage seductress to Ewan McGregor's Renton. Other roles include Mary O'Neary in "Two Family House", and an actress playing Peter Pan in "Finding Neverland". She had major roles, in Robert Altman's British period piece "Gosford Park", where she played an aristocrat's maid, and in "Intermission" (2003), as Deirdre.