diff --git a/org.eclipse.debug.ui/META-INF/MANIFEST.MF b/org.eclipse.debug.ui/META-INF/MANIFEST.MF
index e389441..8b9329f 100644
--- a/org.eclipse.debug.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.debug.ui/META-INF/MANIFEST.MF
@@ -80,7 +80,7 @@
 Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.variables;bundle-version="[3.2.800,4.0.0)",
  org.eclipse.ui;bundle-version="[3.115.0,4.0.0)",
- org.eclipse.ui.console;bundle-version="[3.5.300,4.0.0)",
+ org.eclipse.ui.console;bundle-version="[3.10.0,4.0.0)",
  org.eclipse.help;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.debug.core;bundle-version="[3.9.0,4.0.0)";visibility:=reexport,
  org.eclipse.jface;bundle-version="[3.21.0,4.0.0)",
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ConsolePreferencePage.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ConsolePreferencePage.java
index aec2308..9ee4e61 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ConsolePreferencePage.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ConsolePreferencePage.java
@@ -82,6 +82,8 @@
 	private ConsoleIntegerFieldEditor fTabSizeEditor;
 	private BooleanFieldEditor autoScrollLockEditor;
 
+	private BooleanFieldEditor2 fWordWrapEditor;
+
 	private BooleanFieldEditor2 fInterpretControlCharactersEditor;
 	private BooleanFieldEditor2 fInterpretCrAsControlCharacterEditor;
 
@@ -149,6 +151,11 @@
 
 		autoScrollLockEditor = new BooleanFieldEditor(IConsoleConstants.P_CONSOLE_AUTO_SCROLL_LOCK, DebugPreferencesMessages.ConsolePreferencePage_Show__Console_View_enable_auto_scroll_lock, SWT.NONE, getFieldEditorParent());
 		addField(autoScrollLockEditor);
+
+		fWordWrapEditor = new BooleanFieldEditor2(IConsoleConstants.P_CONSOLE_WORD_WRAP,
+				DebugPreferencesMessages.ConsolePreferencePage_Enable_Word_Wrap_text, SWT.NONE, getFieldEditorParent());
+		addField(fWordWrapEditor);
+
 		addField(new BooleanFieldEditor(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, DebugPreferencesMessages.ConsolePreferencePage_Show__Console_View_when_there_is_program_output_3, SWT.NONE, getFieldEditorParent()));
 		addField(new BooleanFieldEditor(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, DebugPreferencesMessages.ConsolePreferencePage_Show__Console_View_when_there_is_program_error_3, SWT.NONE, getFieldEditorParent()));
 
@@ -203,6 +210,7 @@
 		updateAutoScrollLockEditor();
 		updateBufferSizeEditor();
 		updateInterpretCrAsControlCharacterEditor();
+		updateWordWrapEditorFromConsolePreferences();
 	}
 
 	/**
@@ -242,6 +250,14 @@
 	}
 
 	/**
+	 * Update enablement of word wrapping from Console plugin preference store.
+	 */
+	protected void updateWordWrapEditorFromConsolePreferences() {
+		fWordWrapEditor.setPreferenceStore(ConsolePlugin.getDefault().getPreferenceStore());
+		fWordWrapEditor.load();
+	}
+
+	/**
 	 * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
 	 */
 	@Override
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.java
index 14fa191..7310f1c 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2000, 2019 IBM Corporation and others.
+ *  Copyright (c) 2000, 2020 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -37,6 +37,7 @@
 	public static String ConsolePreferencePage_13;
 	public static String ConsolePreferencePage_Interpret_control_characters;
 	public static String ConsolePreferencePage_Interpret_cr_as_control_character;
+	public static String ConsolePreferencePage_Enable_Word_Wrap_text;
 
 	public static String DebugPreferencePage_1;
 	public static String DebugPreferencePage_2;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.properties b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.properties
index 2a45427..4571780 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.properties
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2019 IBM Corporation and others.
+# Copyright (c) 2000, 2020 IBM Corporation and others.
 #
 # This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License 2.0
@@ -30,6 +30,7 @@
 ConsolePreferencePage_11=Back&ground color:
 ConsolePreferencePage_Interpret_control_characters=Interpret ASCII &control characters
 ConsolePreferencePage_Interpret_cr_as_control_character=Interpret Carriage &Return (\\r) as control character 
+ConsolePreferencePage_Enable_Word_Wrap_text=E&nable word wrap
 
 DebugPreferencePage_1=General Settings for Running and Debugging.
 DebugPreferencePage_2=Re&use editor when displaying source code
diff --git a/org.eclipse.ui.console/META-INF/MANIFEST.MF b/org.eclipse.ui.console/META-INF/MANIFEST.MF
index 9c3bc07..2de8914 100644
--- a/org.eclipse.ui.console/META-INF/MANIFEST.MF
+++ b/org.eclipse.ui.console/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ui.console; singleton:=true
-Bundle-Version: 3.9.300.qualifier
+Bundle-Version: 3.10.0.qualifier
 Bundle-Activator: org.eclipse.ui.console.ConsolePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleConstants.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleConstants.java
index cbb02a8..1cfb1dc 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleConstants.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -157,6 +157,13 @@
 	String P_BACKGROUND_COLOR = ConsolePlugin.getUniqueIdentifier()  + ".P_BACKGROUND_COLOR";	 //$NON-NLS-1$
 
 	/**
+	 * Property constant indicating the user preference for word wrap enabling.
+	 *
+	 * @since 3.10
+	 */
+	String P_CONSOLE_WORD_WRAP = ConsolePlugin.getUniqueIdentifier() + ".P_CONSOLE_WORD_WRAP"; //$NON-NLS-1$
+
+	/**
 	 * The default tab size for text consoles.
 	 *
 	 * @since 3.1
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleUIPreferenceInitializer.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleUIPreferenceInitializer.java
index 71f1999..e87dc66 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleUIPreferenceInitializer.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleUIPreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2018 Andrey Loskutov <loskutov@gmx.de> and others.
+ * Copyright (c) 2018, 2020 Andrey Loskutov <loskutov@gmx.de> and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -28,6 +28,7 @@
 	public void initializeDefaultPreferences() {
 		IPreferenceStore prefs = ConsolePlugin.getDefault().getPreferenceStore();
 		prefs.setDefault(IConsoleConstants.P_CONSOLE_AUTO_SCROLL_LOCK, true);
+		prefs.setDefault(IConsoleConstants.P_CONSOLE_WORD_WRAP, false);
 	}
 
 }
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/WordWrapAction.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/WordWrapAction.java
index 75d7e93..05b1974 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/WordWrapAction.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/WordWrapAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 vogella GmbH
+ * Copyright (c) 2014, 2020 vogella GmbH and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -12,19 +12,25 @@
  *     Gaetano Santoro - initial implementation
  *     Matthias Mailänder - rebase onto Mars
  *     Lars Vogel <Lars.Vogel@gmail.com> - Bug 287303
+ *     Christian Gabrisch <eclipse@cgabrisch.de> - Bug 491853
  *******************************************************************************/
 
 package org.eclipse.ui.internal.console;
 
 import org.eclipse.jface.action.Action;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.console.ConsolePlugin;
+import org.eclipse.ui.console.IConsoleConstants;
 import org.eclipse.ui.console.IConsoleView;
 
 /**
  * Activates line breaks in the Console view so that the full log statement is
  * always visible
  */
-public class WordWrapAction extends Action {
+public class WordWrapAction extends Action implements IPropertyChangeListener {
 
 	private IConsoleView fConsoleView = null;
 
@@ -38,16 +44,36 @@
 		setImageDescriptor(ConsolePluginImages.getImageDescriptor(IInternalConsoleConstants.IMG_ELCL_WRAP));
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IConsoleHelpContextIds.CONSOLE_WORD_WRAP_ACTION);
 
-		boolean checked = fConsoleView.getWordWrap();
-		setChecked(checked);
+		getPreferenceStore().addPropertyChangeListener(this);
+		applyPreferences();
 	}
 
 	@Override
 	public void run() {
-		fConsoleView.setWordWrap(isChecked());
+		boolean enableWordWrap = isChecked();
+		getPreferenceStore().setValue(IConsoleConstants.P_CONSOLE_WORD_WRAP, enableWordWrap);
+	}
+
+	@Override
+	public void propertyChange(PropertyChangeEvent event) {
+		String property = event.getProperty();
+		if (IConsoleConstants.P_CONSOLE_WORD_WRAP.equals(property)) {
+			applyPreferences();
+		}
 	}
 
 	public void dispose() {
+		getPreferenceStore().removePropertyChangeListener(this);
 		fConsoleView = null;
 	}
+
+	private void applyPreferences() {
+		boolean enableWordWrap = getPreferenceStore().getBoolean(IConsoleConstants.P_CONSOLE_WORD_WRAP);
+		setChecked(enableWordWrap);
+		fConsoleView.setWordWrap(enableWordWrap);
+	}
+
+	private IPreferenceStore getPreferenceStore() {
+		return ConsolePlugin.getDefault().getPreferenceStore();
+	}
 }
