Actually, the effector changes the local matrix scale.
For example, a Cube scaled by 2 in X would be : (2, 1, 1)
You need to get this scale and multliply the input cube size by it :
Cube size = 100 cm * (2, 1, 1) = (200, 100, 100)
The result cube is now a frame with the correct size, but there is still the local matrix scale that can't be changed because it depends of the effector. The final cube size looks like 400 cm in X because of the 2 scale factor
So we need to fix it by multiply the cube geometry by the invert of the scale to artificially "reset" the matrix scale
Cube geometry size = (200, 100, 100) * ( 1 / (2,1,1) ) = (100, 100, 100)
And as the local matric scale is still (2,1,1), the result looks like the correct 200 cm, 100 cm, 100 cm :
But carefull with this trick, because it can generate precision artifacts with big scale values (if the scale is 100000, the geometry will be 0.00001 cm, so we can loose precision because of the float limit (see https://en.wikipedia.org/wiki/Floating-point_arithmetic ))