There are a couple of ways that you could do this using FSL utilities, though I don't know what you mean by conserving position since all registrations move the brain in the image space.
1. Use the ApplyXFM GUI - type "ApplyXFM" at your Linux command prompt. I'm asssuming you've already run the registration in FEAT or FLIRT, so you should have a file called "example_func2standard.mat" in your "reg" folder for each run. Use this file for your "Transformation matrix", use your run data for the "Input Volume", then in the "Output size" box, change the pull-down box to "Voxel Dimensions" and set the appropriate voxel size. Set the "Output volume" to the file name you'd like to save the registered data to.
2. On the command line, use flirt with the -applyxfm flag and a reference image with the size you want (here 4x4x4). You can use the function "fslcreatehd" to create a blank image of the appropriate size. It'll look something like this:
$ fslcreatehd 45 54 45 1 4 4 4 0 0 0 0 2 ref_image_4mm.nii.gz
$ flirt -in inimage -out outimage -ref ref_image_4mm.nii.gz -applyxfm -init example_func2standard.mat
You can do the same steps with the ROI masks from PickAtlas. The only thing you need to make sure you do is use the nearest neighbor interpolation to preserve the mask values (i.e. have no fractional values in your mask). You can do this using a "-interp nearestneighbour" flag in the flirt command, or setting it under the "Advanced Options" in the ApplyXFM GUI.