Your scope probably isn't 3" above the bore (center of scope to center of bore) unless it is mounted really high. Most 40mm scopes will be about 1.5" and my 50mm objective scope is 1.75" above the bore.
To see different zero distances just plug #s into a ballistics calculator like this one.
http://www.eskimo.com/~jbm/calculations/traj_basic/traj_basic.html
Find a bullet from the pull-down menu. Make an educated guess at velocity (or use data on cartridge box or actual chrono data). Set the zero distance to 100yds. Set the interval to 25 yds. Leave the atmospheric data alone for now, it won't effect a 100yd zero anyway, just long range ballistics.
So, I left the sight height at 1.5", selected a Barnes 165 gr spitzer at 2700 fps and got a trajectory of -.6" at 25 yds for a 100 yd zero. So...if you are grouping 1/2" low at 25yds, you should be very close to dead on at 100.
You can also use this to zero so many inches high at 100 to be on at say 300 yds or a maximum point blank range value. For this calculation, it lists the max. PB range as 324 yds (bullet within +/- 5") when zeroed at 276 yds. Zeroing at 276 yds would be a PITA, so enter 276 yds as a zero in a new calculation and look at the trajectory at 100 yds (for this example: 4.2" high).
This won't work at 25 yds though, the distance is too close and the differences in trajectory too small. If you remember 100 yd zero = .6" low at 25yds. Well, with a 276 yd zero entered, the trajectory should be .4" low at 25yds, only 2 tenths of an inch difference, but the difference at 100yds was 4 inches.
Anyway, play with the program, the results are just to get you close, then fine tune at the range.