Why does FFT scaling in frequency domain throw off scale of final spatial domain when X dimension != Y dimension?

I’m using cufft to perform C2C transformation of purely real numbers into the frequency domain and then back out to the spatial domain. I’m using cufftMakePlan2d which has arguments for nx and ny which I am selecting to be powers of two (i.e. 2^n) and then cufftExecC2C() to perform the transformation. If I scale the result of the forward transformation into the frequency domain by sqrt( nx * ny ) and then use cufftExecC2C() to bring it back out (inverse) into the spatial domain again and then scale a second time by sqrt( nx * ny ) the code works fine as long as nx == ny, however, when they are not equal, the final answer I get, depending upon their ratio, is sometimes mis-scaled. For example, if nx = 4 and ny = 2 then my spatial answer at the end is too large by a factor of 2. Strangely, if nx = 8 and ny = 2 then my spatial answer is scaled correctly, but then if nx = 16 and ny = 2 then my spatial answer is scaled up by approximately 1.28.

All of this strangeness goes away if instead of scaling by sqrt( nx * ny ) on the frequency result and then again on the final spatial result, I defer scaling until the end when I come back out into the spatial result and instead scale by nx * ny. So for now I appear to have a workaround, but I’d like to understand what is going on here.

Can anybody help explain this behavior in Cuda v9 compiled code on V100 GPU on Linux x64?