What is strange in your layout is that the charts overlap. In the attached screenshot I displaced the charts laterally so that it is visible that the axes cover only a small part of the entire charts, and the empty area is covered by the next chart which - in turn - uses only part of its area, etc.
Why are you doing this?
The other question is: why do you use the graph-to-image transformation to calculate the chart position? Although I cannot reproduce it, calling these transformations too early is critical. I am rather sure that this is the source of your problem, and I'd prefer to avoid it altogether.
I'd propose that you reset the LabelSize of the bottom axis to zero in order to completely fill the chart by the axes. Adjust the height of the charts as needed. And put the individual charts into a panel, and top-align them (Align = alTop). This way the individual charts are adjacent to each other without any calculation. You can adjust their BorderSpacing.Top/.Bottom if you want some additional separation.