Scott McLaughlin held off Championship points leader Will Power to earn his third victory of the season at the Grand Prix of Portland.