There is a third cause of distortion. And it also is frequency sensitive.
The Input DiffPair also affects distortion. Bipolar diffpairs, without emitter resistors to linearize, have predictable IP2 and IP3. These numbers, somewhat different for IP2 versus IP3, are near 0.1voltsPP across the Pin+ to Pin-.
That means 0.1volt at 1KHz would produce 0.1volt at 2KHz. This is IP2. Dropping down by 10:1, to 0.01volt across Pin+ to Pin-, would produce 0.001 volt at 2KHz. In dB, the 2nd order distortion would drop dB_for_dB.
For the 3rd order, given 1KHz and 1,100Hz of level 0.1 volt each, the behavior of 2*F1 +- 1*F2, and 1*F1 +- 2*F2 will produce "shoulders" at 900Hz and 1,200Hz of level 0.1volt also. Dropping the level of 1Khz and 1,100Hz by 10:1, thus 0.01vpp for each, will produce "shoulders" at 900 and 1,200 at 0.0001vpp. In db, the 3rd order distortion would drop 2dB_for_db.
Why is this important? At low frequencies, the huge open loop gain is your friend, and causes voltage of Pin- to Pin+ to be tiny, implementing "virtual Ground". At high frequencies, the dropoff in open loop gain causes the voltage of Pin- to Pin+ to grow 10:1 as the frequency increase 10:1. And large voltages between input pins is what causes the diffpair (bipolars or fets) to distort.
Example: opamp UGBW is 100MHz, your circuit is unity-gain, your frequency is 10MHz, and your input voltage is 1voltPP. The gain at 10MHz is only 10, thus the input error (how much the virtual Ground differs from Zero Volts) is Vout/Gain = 1vpp/10x = 0.1voltpp. Thus the distortion behavior we predicted in our first paragraphs is our distortion situation here.
And as I cautioned, IP2 level is not same as the IP3 level, but they are only a few dB (4:1?) apart.