>Wouldn't it be more safe to Select the 2nd texture as Alpha argument instead of modulating it with the 1st level.
Probable, I've assumed what original texture do not have alpha layer (as TheLion do not want to use it :-( ), so by definition alpha=1 (opaque).

So settings for "1" stage can be:
[pascal][background=#FFFFFF][normal=#000000][number=#0000FF][string=#0000FF][comment=#248F24][reserved=#000000]
m_pd3dDevice.SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_SELECTARG2);
m_pd3dDevice.SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pd3dDevice.SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
m_pd3dDevice.SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
m_pd3dDevice.SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
m_pd3dDevice.SetTextureStageState(1, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
[/pascal]
I prefer to set all arguments for texture stage, so some bad driver will not be confused by possible strange combination of states.

>ps : By the way, didn't you made a mistake writing COLORARG instead of ALPHAARG ?
Yep, I've corrected this.