Vabbè me la canto e me la suono. 
Ho risolto il problema anche se non mi è ancora chiaro perchè il codice nel primo post duplicasse la foto in galleria.
Riporto la soluzione per chi fosse eventualmente interessato.
Al posto di
codice:
// Save image to the album gallery
MediaStore.Images.Media.insertImage(context.getContentResolver(),
f.getAbsolutePath(), picName, "Screenshot");
usate il codice seguente
codice:
// Save image to the gallery album
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, f.getName());
values.put(MediaStore.Images.Media.DATE_TAKEN, f.lastModified());
values.put(MediaStore.Images.Media.DATE_ADDED, f.lastModified());
values.put(MediaStore.Images.Media.DATE_MODIFIED, f.lastModified());
values.put(MediaStore.Images.Media.BUCKET_DISPLAY_NAME, context
.getResources().getString(R.string.app_name));
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
values.put(MediaStore.Images.Media.DESCRIPTION, "Screenshot");
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
Uri uri = context.getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);