private void rotateAroundPoint(Vector2 point, float delta)
    {
        var transform = control.transform;
        var corners   = control.GetCorners();

        var plane    = new Plane(corners[0], corners[1], corners[2]);
        var ray      = control.GetCamera().ScreenPointToRay(point);
        var distance = 0f;

        plane.Raycast(ray, out distance);
        var worldAnchor = ray.GetPoint(distance);

        var deltaAngle = new Vector3(0, 0, delta);
        var angles     = (transform.eulerAngles + deltaAngle);

        var newPos = rotatePointAroundPivot(transform.position, worldAnchor, deltaAngle);

        transform.position    = newPos;
        transform.eulerAngles = angles;
    }