diff --git a/dlls/dwrite/gdiinterop.c b/dlls/dwrite/gdiinterop.c
index ded37312441ef55a6328b6b627b09a1fea58fd43..794ebeeacb1e14859e001afd09791b9e5702416e 100644
--- a/dlls/dwrite/gdiinterop.c
+++ b/dlls/dwrite/gdiinterop.c
@@ -422,6 +422,11 @@ static HRESULT WINAPI rendertarget_DrawGlyphRun(IDWriteBitmapRenderTarget1 *ifac
         if (texturetype == DWRITE_TEXTURE_CLEARTYPE_3x1)
             size *= 3;
         bitmap = heap_alloc_zero(size);
+        if (!bitmap) {
+            IDWriteGlyphRunAnalysis_Release(analysis);
+            return E_OUTOFMEMORY;
+        }
+
         hr = IDWriteGlyphRunAnalysis_CreateAlphaTexture(analysis, texturetype, &target, bitmap, size);
         if (hr == S_OK) {
             /* blit to target dib */