Material SceneColor node sampler filtering

When using the SceneColor node in a Surface material, the default filtering seems to be bilinear filtering which is causing bleeding problems when the material is at the edge of the screen. I tried replacing this node with a custom node:

return Texture2DSample(SceneColorTexture, SceneColorTextureSampler, UV).rgb;

…which I took from CalcSceneColor() in Engine/Shaders/Common.usf, and that gives me a point-filtered sampler instead of bilinear (I confirmed the difference between the two with RenderDoc).

I’m confused - I searched through the engine code, and the only place I can find code for the SceneColor node is in FHLSLMaterialTranslator::SceneColor() - but that inserts DecodeSceneColorForMaterialNode() which looks up LightAttenuationTexture and doesn’t seem to be the right code at all (it fails to compile if I try to call this from my custom node).

Am I looking in the wrong place? Where is the code for SceneColor, and where does the bilinear filtering sampler used in the default SceneColor node come from? Is there a problem with doing a direct sample of SceneColorTexture in a custom node in a Surface material?