Editor script grid coordinate mapping problem

Editor script mouse Position mapping grids coordinate problem. The left-bottom grid coordinate should be (0,0), but I get (0,4). Does somebody know how to solve this problem?

public Vector3 WorldToGridCoordinates(Vector3 point)

{

Vector3 gridPoint = new Vector3((int)((point.x-transform.position.x)/GridSize),

(int)((point.y-transform.position.y)/GridSize),0.0f);

return gridPoint;

}

//drawing grid
private void GridGizmo(int cols,int rows)

{

for (int i=1; i<cols;i++)

{

Gizmos.DrawLine(new Vector3(i * GridSize, 0, 0), new Vector3(i * GridSize, rows * GridSize,0));

}

for (int j=1;j<rows;j++)

{

Gizmos.DrawLine(new Vector3(0, j * GridSize, 0), new Vector3(cols * GridSize, j * GridSize, 0));

}

}

//get mouse position for grid

private void EventHandler()

{

HandleUtility.AddDefaultControl(

GUIUtility.GetControlID(FocusType.Passive));

Camera camera = SceneView.currentDrawingSceneView.camera;

Vector3 mousePosition = Event.current.mousePosition;

mousePosition = new Vector2(mousePosition.x, camera.pixelHeight - mousePosition.y);

//Debug.LogFormat(“MousePos:{0}”, mousePosition);

Vector3 worldPos = camera.ScreenToWorldPoint(mousePosition);

Vector3 gridPos = _myTarget.WorldToGridCoordinates(worldPos);

int col = (int)gridPos.x;

int row = (int)gridPos.y;

Debug.LogFormat(“GridPos {0},{1}”, col, row);

This problem is solved.
Use

Vector3 spawnPosition = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition).origin;

replace

Vector3 mousePosition = Event.current.mousePosition;
mousePosition = new Vector2(mousePosition.x, camera.pixelHeight - mousePosition.y);
Vector3 worldPos = camera.ScreenToWorldPoint(mousePosition);

reference: MAKING A BASIC 2D TILE MAP EDITOR USING A CUSTOM INSPECTOR