So this is a new update, I am not done yet though:
I can confirm that the code in UIAnchor.cs:
if (mTrans.position != v) mTrans.position = v;
should be changed in something similar to:
if ((mTrans.position - v).sqrMagnitude > 1E-08f)
mTrans.position = v;
or even something like
Vector3 ps = mTrans.position;
// Wrapped in an 'if' so the scene doesn't get marked as 'edited' every frame
if (!Mathf.Approximately(ps.x, v.x) ||
!Mathf.Approximately(ps.y, v.y) ||
!Mathf.Approximately(ps.z, v.z))
mTrans.position = v;
that you already used elsewhere.
this at least stop the scenes to be modified continuously.
However I noticed another very annoying inconvenient, many (too many to be fixed by me) scripts use to change serialized values inside Start, Awake or OnEnable. This make the scene be modified (the star appears) once I stop the game execution from the editor.
I noticed that occasionally a check to avoid to assign the same value again is present, while other times it is not.
Anyway the question is: does this introduce major troubles? If as I suspect this behavior break the prefab connections, this could be a major problem. My next experiment will be to verify if the prefabs connections are actually broken when a serializable value changes without being applied.
Edit:incredibly Mathf.approximately is not effective enough since it seems that the error is greater than the smallest tolerance.
Edit2: do you think my problem has nothing to do with NGUI and should be found somewhere else?