Thanks for the answer, I will use that method. However the solution isn't quite general purpose as I'd have liked it uses constants to offset the position of the top & left plot area, and if these are changed the cursor is offset. (The plot area does move automatically if axis number format or just the size of the y-axis values change.)
I'd still like to find a way of finding the plot area position programatically - I've needed this a few times elsewhere in my program. For instance I have a cluster of buttons matched up to points on a graph that is programmatically resized depending on the number of tooling heads on the machine I'm monitoring and it doesn't always align to the plot.
