diff --git a/vncviewer/CConn.cxx b/vncviewer/CConn.cxx
index b4610e6..2cc1fe4 100644
--- a/vncviewer/CConn.cxx
+++ b/vncviewer/CConn.cxx
@@ -377,9 +377,9 @@
   fl_beep();
 }
 
-void CConn::serverCutText(const char* str, rdr::U32 len)
+void CConn::serverCutText(const char* str)
 {
-  desktop->serverCutText(str, len);
+  desktop->serverCutText(str);
 }
 
 void CConn::dataRect(const Rect& r, int encoding)
diff --git a/vncviewer/CConn.h b/vncviewer/CConn.h
index 2e3362c..38e09c2 100644
--- a/vncviewer/CConn.h
+++ b/vncviewer/CConn.h
@@ -61,7 +61,7 @@
 
   void bell();
 
-  void serverCutText(const char* str, rdr::U32 len);
+  void serverCutText(const char* str);
 
   void framebufferUpdateStart();
   void framebufferUpdateEnd();
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index 150c39b..4429e77 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -276,9 +276,9 @@
 }
 
 
-void DesktopWindow::serverCutText(const char* str, rdr::U32 len)
+void DesktopWindow::serverCutText(const char* str)
 {
-  viewport->serverCutText(str, len);
+  viewport->serverCutText(str);
 }
 
 
diff --git a/vncviewer/DesktopWindow.h b/vncviewer/DesktopWindow.h
index 6ec8e1b..fe938d9 100644
--- a/vncviewer/DesktopWindow.h
+++ b/vncviewer/DesktopWindow.h
@@ -63,7 +63,7 @@
   void resizeFramebuffer(int new_w, int new_h);
 
   // Incoming clipboard from server
-  void serverCutText(const char* str, rdr::U32 len);
+  void serverCutText(const char* str);
 
   // New image for the locally rendered cursor
   void setCursor(int width, int height, const rfb::Point& hotspot,
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 15a3ec4..5e49599 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -232,7 +232,7 @@
   damage(FL_DAMAGE_USER1, r.tl.x + x(), r.tl.y + y(), r.width(), r.height());
 }
 
-void Viewport::serverCutText(const char* str, rdr::U32 len)
+void Viewport::serverCutText(const char* str)
 {
   char *buffer;
   int size, ret;
@@ -242,7 +242,7 @@
   if (!acceptClipboard)
     return;
 
-  size = fl_utf8froma(NULL, 0, str, len);
+  size = fl_utf8froma(NULL, 0, str, strlen(str));
   if (size <= 0)
     return;
 
@@ -250,7 +250,7 @@
 
   buffer = new char[size];
 
-  ret = fl_utf8froma(buffer, size, str, len);
+  ret = fl_utf8froma(buffer, size, str, strlen(str));
   assert(ret < size);
 
   vlog.debug("Got clipboard data (%d bytes)", (int)strlen(buffer));
@@ -577,7 +577,7 @@
     vlog.debug("Sending clipboard data (%d bytes)", (int)strlen(filtered));
 
     try {
-      cc->writer()->writeClientCutText(filtered, strlen(filtered));
+      cc->writer()->writeClientCutText(filtered);
     } catch (rdr::Exception& e) {
       vlog.error("%s", e.str());
       exit_vncviewer(e.str());
@@ -768,7 +768,7 @@
     size_t len = strlen(pendingClientCutText);
     vlog.debug("Sending pending clipboard data (%d bytes)", (int)len);
     try {
-      cc->writer()->writeClientCutText(pendingClientCutText, len);
+      cc->writer()->writeClientCutText(pendingClientCutText);
     } catch (rdr::Exception& e) {
       vlog.error("%s", e.str());
       exit_vncviewer(e.str());
diff --git a/vncviewer/Viewport.h b/vncviewer/Viewport.h
index be2192b..c2c9872 100644
--- a/vncviewer/Viewport.h
+++ b/vncviewer/Viewport.h
@@ -1,5 +1,5 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
- * Copyright 2011 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ * Copyright 2011-2019 Pierre Ossman <ossman@cendio.se> for Cendio AB
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -46,7 +46,7 @@
   void updateWindow();
 
   // Incoming clipboard from server
-  void serverCutText(const char* str, rdr::U32 len);
+  void serverCutText(const char* str);
 
   // New image for the locally rendered cursor
   void setCursor(int width, int height, const rfb::Point& hotspot,
