ciao LMondi,
per la qualità, purtroppo non credo si possa più di tanto... tieni conto che l'immagine dello schermo è a 72 Dpi, quindi incrementare la qualità di stampa a 300 è a dir poco irrilevante 
per quanto riguarda la "selezione" della stampa, puoi vedere la sintassi completa del metodo PaintPicture, che oltre a ridimemsionare l'immagine permette anche di effettuare un "ritaglio" sull'immagine sorgente:
codice:
Dim imgW as Integer
Dim imgH as Integer
imgW = Printer.ScaleX(picPerStampa, vbHimetric, vbTwips)
imgH = Printer.ScaleY(picPerStampa, vbHimetric, vbTwips)
Printer.PaintPicture picPerStampa, 0, 0 , Printer.ScaleWidth, Printer.ScaleHeight, 150, 150, imgW-300, imgH-300
Printer.EndDoc
in questo esempio viene stampata l'immagine rifilata di 150 twips per lato adattandone l'immagine allo spazio disponibile della stampante.
Boolean