Inaccurate raycast3d result

Godot Version

4.3

Question

I have a gridmap consisting of cubes. I need to get what kind of cube the player is looking at. I’m using Raycast3d like this:

public override void _Input(InputEvent @event)
	{
		
		if (@event is InputEventMouseButton button && button.ButtonIndex == MouseButton.Left && button.Pressed)
		{
			var camera = GetNode<Camera3D>("Camera3D");
			var raycast = camera.GetNode<RayCast3D>("RayCast3D");
			if (raycast.IsColliding())
			{
				var collider = raycast.GetCollider();
				var position = raycast.GetCollisionPoint();
				GD.Print($"Collision at {position}");
				GD.Print($"Normal: {raycast.GetCollisionNormal()}");
				if (collider is Godot.GridMap gridMap)
				{
					var cellSize = gridMap.GetCellSize();
					var vector3I = new Vector3I(Mathf.FloorToInt(position.X / cellSize.X),
						Mathf.FloorToInt(position.Y / cellSize.Y), Mathf.FloorToInt(position.Z / cellSize.Z));
					GD.Print($"Vector: {vector3I}");
					GD.Print(gridMap.GetCellItem(vector3I));
				}
			}
		}
	}

The problem is that sometimes collision point is not in the cube that player is looking at, but outside. This gets the cell in the adjacent position. How can this be fixed?