Transform Control scale one direction

I am trying to implement scale in one direction. I did it by moving in the opposite direction,

object.scale.copy(scale);
        switch (axis) {
            case 'X':
                object.position.x = _positionStart.x - ((width * scale.x) / _scaleStart.x - width) / 2;
                break;
            case 'Z':
                object.position.z = _positionStart.z - ((depth * scale.z) / _scaleStart.z - depth) / 2;
                break;
            default:
                break;
        }

but at some positions of the camera, there is a sharp scale as in the picture


I think that the problem may be in this line
this.pointEnd.copy(planeIntersect.point).sub(this.worldPositionStart);
i changed worldPositionStart to worldPosition, but it started to lag when scale. Someone can help?