So trul's code with parenting wasn't quite what I personally was looking for and I couldn't get it to work, but gregroberts's example code also didn't work for me out of the box, so I eventually made this:
I've translated gregroberts's mostly-working (I'm assuming Java) code translation of De-Panther's pseudocode into fully functioning and tested C#:

Just remember: It is extremely important that the pivot point be in the target's PARENT'S space. So if your target object has no parent, your pivot is in world space. If your target is a child of SomeGameObject, you pivot point must be in SomeGameObject's space. This can be accomplished with

Code (CSharp):

targetGameObject.transform.parent.InverseTransformPoint(pivot);

if your pivot is in world space.

Hope this helps someone who needed it as much as I did, thanks to everyone who contributed here, and happy coding!

And maybe we can add a bool that ask if pivot is in parent space or world space.

Also, now that I think about it, it works only if the scaling was unified.
So iguess it shold be:
Vector3 RS= new Vector3(newScale.x / target.transform.localScale.x, newScale.y / target.transform.localScale.y, newScale.z / target.transform.localScale.z);
Vector3 FP = B + C.Scale(RS);