Beh, per quanto riguarda il problema dei margini, prova a controllare e impostare sull'evento
OnPrint l'oggetto Graphics ( e.graphics) a proprietà PageUnit.
Qui puoi impostare l'unità di misura dei valori passati alle procedure di disegno
sull oggetto graphics( x e y di drawstring per esempio...)
Nn so se questo l'hai gia impostato; se no prova cn quello...
Oppure prova a impostare i margini manualmente prima della stampa sull oggetto
PrintDocument...