Terms of the deal weren't announced, but the Fort Worth (Texas) Star-Telegram reported Moreland's contract is for $2.65 million.
The 28-year-old was seeking $3.25 million in arbitration, while the Rangers responded with a $2 million offer, the newspaper said.
Moreland, a four-year veteran, posted career highs of 23 home runs and 60 RBI, but recorded a career-low batting average of .232, in 147 games for the Rangers in 2013.
Millions of Getty images now available for free via embed tool
Boston schools pull out free condoms over wrapping complaints