This usually does not work (nothing to do with MX, NAT breaks it GRE in general). This is because each end of a GRE tunnel configures the source and destination address, which must match. Because of NAT, that can not happen.
To make it work, you have to get rid of NAT. The common solution is to create an IPSec tunnel between the two devices running NAT (the MX and the remote firewall in this case), and then run GRE over that between the two GRE endpoints.