I personally don't think there's an easy way of doing that (if i understand your "desire" correctly), it would probably be possible with going DirectX/Direct3D and doing somekind of multisampling or with some shader code.
What you could try to do is creating an intermediate buffer, do those blits and pixel modifications on this buffer, and then blit this buffer onto the screen.
Something similar to this should do it (writing this by hearth so it might need some fixups here or there, so don't just blindly copy-paste it):
void TestDlg::ShowData() {
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP_TESTBITMAP);
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
CDC* pDC = this->GetDC();
CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap *pOldBml = dc.SelectObject(bmp);
CBitmap interBitmap;
CDC interDC;
interBitmap.CreateCompatibleBitmap(pDC, bmpInfo.bmWidth, bmpInfo.bmHeight);
interDC.CreatecompartibleDC(pDC);
Cbitmap *oldInterBitmap = interDC.SelectObject(&interBitmap);
interDC.BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dc, 0, 0, SRCCOPY);
for (int i = 0; i < bmpInfo.bmHeight; i++) {
for(int j = 0; j < bmpInfo.bmWidth; j++) {
dc.SetPixel(j, i, RGB(rand()%100, rand()%50, rand()%100)); }
}
interDC.BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dc, 0, 0, SRCAND); pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &interDC, 0, 0, SRCCOPY);
interDC.SelectObject(oldInterBitmap);
interDC.DeleteDC();
interBitmap.DeleteObject();
dc.SelectObject(pOldBmp);
bmp.DeleteObject();
dc.DeleteDC();
ReleaseDC(pDC);
}