That's because of noise normalization - for the free orientation solution noise normalization calculates a sum across the three dimensions ([line 171](https://github.com/rgoj/mne-python/blob/c09f97018a06a5e659e52009cdc57e1aafe17d99/mne/beamformer/_lcmv.py#L171)), and then square root is taken of that sum, whereas when the orientation is fixed the sum isn't calculated, so only noise in the normal direction is taken into account and therefore it can be much smaller than for the free orientation case.

Come to think of it it's more than just a question of numerical problems... when free orientation is chosen the final result is: *norm_of_activity_vector* / *norm_of_noise_vector*, whereas when normal orientation is picked the result is *activity_in_normal_direction* / *noise_in_normal_direction* and if most of the noise is in a direction different than the normal direction, then the *norm_of_noise_vector* will be much higher then *noise_in_normal_direction*. Makes sense?

In any case, when normal orientation is picked after noise normalization, the difference disappears. So maybe that's where the orientation should be picked? I put it before noise normalization for consistency with minimum_norm... but I don't know that code too well, so maybe it's a slightly different issue here than there and there's no point in maintaining consistency...?