The PrintPreviewDialog is a .Net Framework form, so you would use the same techniques to size and position it as you would with any form. To set the zoom factor, this is also a .Net Framework process. You somehow have to get the PrintPreviewControl that is embedded in the PrintPreviewDialog and set some properties on that object. Below is code that worked for me. There may be better ways of doing this.
private void button1_Click(object sender, System.EventArgs e)
{
GridDataBoundGrid grid = this.gridDataBoundGrid1;
GridPrintDocument pd = new GridPrintDocument(grid, true);
PrintPreviewDialog dlg = new PrintPreviewDialog();
dlg.Document = pd;
dlg.Bounds = new Rectangle(0, 0, grid.Width, grid.Height);
Point gridLoc = grid.Location;
Point pt = this.gridDataBoundGrid1.PointToScreen(gridLoc);
dlg.SetDesktopLocation(pt.X - gridLoc.X, pt.Y - gridLoc.Y);
dlg.StartPosition = FormStartPosition.Manual;
PrintPreviewControl ppc = null;
foreach(Control c in dlg.Controls)
{
if(c is PrintPreviewControl)
{
ppc = c as PrintPreviewControl;
ppc.AutoZoom = true;
ppc.Zoom = 1;
break;
}
}
dlg.ShowDialog();
}