Is fft2 in MATLAB unitary? Some differences happen
The standard (conventional) definition of DFT (1D or 2D) is not unitary.

See for example the 1D standard (conventional) DFT pair as:

$$ X[k] = \sum_{n=0}^{N-1} x[n] e^{-j \frac{2\pi}{N} n k } $$

and 

$$ x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k] e^{j \frac{2\pi}{N} k n} $$

DFT is not unitary due to the fact that the forward and backward transforms are not symmetric (the scale $\frac{1}{N}$) 

Hence MATLAB's fft() and fft2() functions will not provide unitary transforms; i.e., they do not preserve energy.

However, you can define unitary version of DFT by distributing the scale as:

$$ X[k] = \frac{1}{\sqrt{N}} \sum_{n=0}^{N-1} x[n] e^{-j \frac{2\pi}{N} n k } $$

and 

$$ x[n] = \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} X[k] e^{j \frac{2\pi}{N} k n} $$

Now this pair is unitary.