WIC/SharpDx Texture From Image File With Transparency

We have an application that uses SharpDx to render some textures from image files. If my image file contains transparency, the transparent section shows up as a black box instead of being transparent.

Here's the method that get's the WIC.BitmapSource

 private static SharpDX.WIC.BitmapSource LoadBitmap(SharpDX.WIC.ImagingFactory2 factory, string filename)
        {            
            using (var oBitmapDecoder = new SharpDX.WIC.BitmapDecoder(
                factory,
                filename,
                SharpDX.WIC.DecodeOptions.CacheOnDemand
                ))
            {                
                var oFormatConverter = new SharpDX.WIC.FormatConverter(factory);

                oFormatConverter.Initialize(
                    oBitmapDecoder.GetFrame(0),
                    SharpDX.WIC.PixelFormat.Format32bppPRGBA,
                    SharpDX.WIC.BitmapDitherType.None,
                    null,
                    0.0,
                    SharpDX.WIC.BitmapPaletteType.Custom);

                return oFormatConverter;
            }
        }

Here's where I get the Texture2D

 private static SharpDX.Direct3D11.Texture2D CreateTexture2DFromBitmap(SharpDX.Direct3D11.Device device, SharpDX.DataStream buffer, int width, int height)
        {
            int iStride = width * 4;
            return new SharpDX.Direct3D11.Texture2D(device, new SharpDX.Direct3D11.Texture2DDescription()
            {
                Width = width,
                Height = height,
                ArraySize = 1,
                BindFlags = SharpDX.Direct3D11.BindFlags.ShaderResource,
                Usage = SharpDX.Direct3D11.ResourceUsage.Immutable,
                CpuAccessFlags = SharpDX.Direct3D11.CpuAccessFlags.None,
                Format = SharpDX.DXGI.Format.R8G8B8A8_UNorm,
                MipLevels = 1,
                OptionFlags = SharpDX.Direct3D11.ResourceOptionFlags.None,
                SampleDescription = new SharpDX.DXGI.SampleDescription(1, 0),
            }, new SharpDX.DataRectangle(buffer.DataPointer, iStride));
        }

Here's where it gets the ShaderResourceView using those methods:

 internal ShaderResourceView GetShaderResourceFromFile(SharpDX.Direct3D11.Device device, string imagePath)
        {
            if (m_dTextureCache.ContainsKey(imagePath))
            {
                return m_dTextureCache[imagePath];
            }
            else
            {
                using (var oBitmapSource = LoadBitmap(new SharpDX.WIC.ImagingFactory2(), imagePath))
                {
                    //The stride is the number of bytes per "line". This is the width times the number of bytes per pixel, which is 4
                    int iStride = oBitmapSource.Size.Width * 4;
                    using (var oBuffer = new SharpDX.DataStream(oBitmapSource.Size.Height * iStride, true, true))
                    {
                        // Copy the content of the WIC to the buffer
                        oBitmapSource.CopyPixels(iStride, oBuffer);

                        using (var oTexture = CreateTexture2DFromBitmap(device, oBuffer, oBitmapSource.Size.Width, oBitmapSource.Size.Height))
                        {
                            ShaderResourceView oShaderResourceView = new ShaderResourceView(device, oTexture);
                            m_dTextureCache.Add(imagePath, oShaderResourceView);
                            return oShaderResourceView;
                        }
                    }
                }
            }
        }

Is there something in those methods that would cause the transparency to not show? Or would it be later when it uses that ShaderResourceView to render? That method is pretty large so I didn't include it here.

***Edit - so of course I figure it out shortly after posting this. The problem wasn't with any of the methods I posted above, I just had to enable blending later on. Here's the code I added to get the alpha-blending to work:

  BlendStateDescription oBlendStateDescription = new BlendStateDescription();
                            oBlendStateDescription.RenderTarget[0].IsBlendEnabled = true;
                            oBlendStateDescription.RenderTarget[0].SourceBlend = BlendOption.SourceAlpha;
                            oBlendStateDescription.RenderTarget[0].DestinationBlend = BlendOption.InverseSourceAlpha;
                            oBlendStateDescription.RenderTarget[0].BlendOperation = BlendOperation.Add;
                            oBlendStateDescription.RenderTarget[0].SourceAlphaBlend = BlendOption.Zero;
                            oBlendStateDescription.RenderTarget[0].DestinationAlphaBlend = BlendOption.Zero;
                            oBlendStateDescription.RenderTarget[0].AlphaBlendOperation = BlendOperation.Add;
                            oBlendStateDescription.RenderTarget[0].RenderTargetWriteMask = ColorWriteMaskFlags.All;
                            BlendState oAlphaEnableBlendState = new BlendState(oDevice, oBlendStateDescription);
                            oDeviceContext.OutputMerger.SetBlendState(oAlphaEnableBlendState);