diff --git a/io/io/src/TKey.cxx b/io/io/src/TKey.cxx
index 6d0a2271523c6..2860044907e2f 100644
--- a/io/io/src/TKey.cxx
+++ b/io/io/src/TKey.cxx
@@ -251,7 +251,7 @@ TKey::TKey(const TObject *obj, const char *name, Int_t bufsize, TDirectory* moth
    ROOT::RCompressionSetting::EAlgorithm::EValues cxAlgorithm = static_cast<ROOT::RCompressionSetting::EAlgorithm::EValues>(GetFile() ? GetFile()->GetCompressionAlgorithm() : 0);
    if (cxlevel > 0 && fObjlen > 256) {
       Int_t nbuffers = 1 + (fObjlen - 1)/kMAXZIPBUF;
-      Int_t buflen = TMath::Max(512,fKeylen + fObjlen + 9*nbuffers + 28); //add 28 bytes in case object is placed in a deleted gap
+      Int_t buflen = TMath::Max(512, fKeylen + fObjlen);
       fBuffer = new char[buflen];
       char *objbuf = fBufferRef->Buffer() + fKeylen;
       char *bufcur = &fBuffer[fKeylen];
@@ -343,7 +343,7 @@ TKey::TKey(const void *obj, const TClass *cl, const char *name, Int_t bufsize, T
    ROOT::RCompressionSetting::EAlgorithm::EValues cxAlgorithm = static_cast<ROOT::RCompressionSetting::EAlgorithm::EValues>(GetFile() ? GetFile()->GetCompressionAlgorithm() : 0);
    if (cxlevel > 0 && fObjlen > 256) {
       Int_t nbuffers = 1 + (fObjlen - 1)/kMAXZIPBUF;
-      Int_t buflen = TMath::Max(512,fKeylen + fObjlen + 9*nbuffers + 28); //add 28 bytes in case object is placed in a deleted gap
+      Int_t buflen = TMath::Max(512, fKeylen + fObjlen);
       fBuffer = new char[buflen];
       char *objbuf = fBufferRef->Buffer() + fKeylen;
       char *bufcur = &fBuffer[fKeylen];
diff --git a/io/xml/src/TBufferXML.cxx b/io/xml/src/TBufferXML.cxx
index 79d1938e12587..1ff0183b04930 100644
--- a/io/xml/src/TBufferXML.cxx
+++ b/io/xml/src/TBufferXML.cxx
@@ -403,7 +403,7 @@ void TBufferXML::XmlWriteBlock(XMLNodePointer_t node)
 
    if ((Length() > 512) && (compressionLevel > 0)) {
       int zipBufferSize = Length();
-      fZipBuffer = new char[zipBufferSize + 9];
+      fZipBuffer = new char[zipBufferSize];
       int dataSize = Length();
       int compressedSize = 0;
       R__zipMultipleAlgorithm(compressionLevel, &dataSize, Buffer(), &zipBufferSize, fZipBuffer, &compressedSize,
diff --git a/net/net/src/TMessage.cxx b/net/net/src/TMessage.cxx
index b555ffc993aab..f67a98247f142 100644
--- a/net/net/src/TMessage.cxx
+++ b/net/net/src/TMessage.cxx
@@ -362,7 +362,7 @@ Int_t TMessage::Compress()
    Int_t messlen  = Length() - hdrlen;
    Int_t nbuffers = 1 + (messlen - 1) / kMAXZIPBUF;
    Int_t chdrlen  = 3*sizeof(UInt_t);   // compressed buffer header length
-   Int_t buflen   = std::max(512, chdrlen + messlen + 9*nbuffers);
+   Int_t buflen   = std::max(512, chdrlen + messlen);
    fBufComp       = new char[buflen];
    char *messbuf  = Buffer() + hdrlen;
    char *bufcur   = fBufComp + chdrlen;
diff --git a/tree/tree/src/TBasket.cxx b/tree/tree/src/TBasket.cxx
index 8f82dcdb940d7..a33a3149b69f5 100644
--- a/tree/tree/src/TBasket.cxx
+++ b/tree/tree/src/TBasket.cxx
@@ -1218,7 +1218,7 @@ Int_t TBasket::WriteBuffer()
       cxAlgorithm = static_cast<ROOT::RCompressionSetting::EAlgorithm::EValues>(file->GetCompressionAlgorithm());
    if (cxlevel > 0) {
       Int_t nbuffers = 1 + (fObjlen - 1) / kMAXZIPBUF;
-      Int_t buflen = fKeylen + fObjlen + 9 * nbuffers + 28; //add 28 bytes in case object is placed in a deleted gap
+      Int_t buflen = fKeylen + fObjlen;
       InitializeCompressedBuffer(buflen, file);
       if (!fCompressedBufferRef) {
          Warning("WriteBuffer", "Unable to allocate the compressed buffer");