A method of applying transmitter data predistortion to an orthogonal frequency-division multiplexing, OFDM,-like transmission channel of a satellite transmitter that includes an OFDM modulator to modulate a plurality of data symbols output from a bit-to-symbol modulator onto a plurality of OFDM subcarriers to form a plurality of OFDM modulated data symbols, wherein the method is implemented in the time domain following the OFDM modulator or in the frequency domain preceding the OFDM modulator, the method comprising: receiving, at a first data predistorter stage of a multi-stage data predistorter, an input vector of symbols ( x md; X md) obtained from a modulator (110; 108) of a satellite transmitter; outputting the undistorted input vector of symbols ( x md; X md) from the first data predistorter stage; for each data predistorter stage of the multi-stage data predistorter after the first data predistorter stage: processing a symbol data vector output of the previous sth data predistorter stage through a distortion construction H md t H md f to obtain an estimate of distorted symbols; dividing the estimate of distorted symbols by a complex-valued gain ( λ md) to form a gain-adjusted estimate of the distorted symbols; estimating an error e md Tx E md Tx by calculating a difference between the undistorted input vector of modulated symbols ( x md; X md) and the gain-adjusted estimate; and computing a vector of predistorted symbols for the data predistorter stage x _ md s + 1; X _ md s + 1 by adjusting the symbol data vector output from the previous data predistorter stage by an amount proportional to the error; and outputting, from the last stage of the multi-stage data predistorter, a signal comprising a predistortion corrected output vector of symbols x _ md s + 1 X _ md s + 1. receiving, at a first data predistorter stage of a multi-stage data predistorter, an input vector of symbols ( x md; X md) obtained from a modulator (110; 108) of a satellite transmitter; outputting the undistorted input vector of symbols ( x md; X md) from the first data predistorter stage; for each data predistorter stage of the multi-stage data predistorter after the first data predistorter stage: processing a symbol data vector output of the previous sth data predistorter stage through a distortion construction H md t H md f to obtain an estimate of distorted symbols; dividing the estimate of distorted symbols by a complex-valued gain ( λ md) to form a gain-adjusted estimate of the distorted symbols; estimating an error e md Tx E md Tx by calculating a difference between the undistorted input vector of modulated symbols ( x md; X md) and the gain-adjusted estimate; and computing a vector of predistorted symbols for the data predistorter stage x _ md s + 1; X _ md s + 1 by adjusting the symbol data vector output from the previous data predistorter stage by an amount proportional to the error; and processing a symbol data vector output of the previous sth data predistorter stage through a distortion construction H md t H md f to obtain an estimate of distorted symbols; dividing the estimate of distorted symbols by a complex-valued gain ( λ md) to form a gain-adjusted estimate of the distorted symbols; estimating an error e md Tx E md Tx by calculating a difference between the undistorted input vector of modulated symbols ( x md; X md) and the gain-adjusted estimate; and computing a vector of predistorted symbols for the data predistorter stage x _ md s + 1; X _ md s + 1 by adjusting the symbol data vector output from the previous data predistorter stage by an amount proportional to the error; and outputting, from the last stage of the multi-stage data predistorter, a signal comprising a predistortion corrected output vector of symbols x _ md s + 1 X _ md s + 1.