Civi sends to every recurring donor an email which includes a way of changing their recurring donation, including amount. This information is sent to PayPal to be used on the next transaction. And when the IPN is received by CiviCRM, PayPal sends the new amount information, which Civi ignores and just retrieves the information of the first contribution of the recurrence and uses that information instead. I'm having to fix dozens of transactions on a monthly basis due to this strangeness. Conveniently, I've got a SQL script that updates all the tables, including financials.
But I shouldn't have to do this. Civi should use the parameters sent by PayPal, but it isn't.
Version is most recent at the time of the message: 4.7.29