McGrattan, 33, who's played for four other NHL teams, is a 235-pound player who’s piled up 609 penalty minutes in 317 career games in the league.
A hockey official not authorized to speak publicly about team finances said McGrattan was signed to a two-way contract that will pay him $600,000 annually if he sticks with the Ducks or $100,000 if assigned to the team’s minor-league affiliate in San Diego.
He played for Calgary's American Hockey League affiliate last season after notching four goals and eight points in 76 games with Calgary in 2013-14. McGrattan has 10 goals and 27 points in his career.
The Ducks first acquired McGrattan in 2011, and he played 20 minor-league games for the organization before moving to the Nashville Predators.
Follow Lance Pugmire on Twitter @latimespugmire